2014-04-01 116 views
1

我想在MySQL中得到一个子查询联合。这一点很简单。MySQL嵌套联盟替代

(subquery A) 
union 
(subquery B limit 15) 
union 
(subquery C limit 15) 

但是重要的是B和C的联合共有30条记录。如果B少于15,我需要C来填充余数。所以我试试这个:

(subquery B limit 15) 
union 
(subquery C) 
limit 30 

而这让我得到我需要的东西。一旦我将A添加回来,导致嵌套联合,MySQL会给出语法错误。

(subquery A) 
union 
(
(subquery B limit 15) 
    union 
(subquery C) 
    limit 30 
) 

是否有另一种方法来获得相同的最终结果?

回答

0

可能像

(select x from a) 
union 
(select * from 
(
    (select y from b limit 15) 
    union 
    (select z from c) 
    limit 30 
) as k 
) 
+0

这做到了。谢谢! – makeitbetter

+0

很高兴知道这一点 – Leo