MySQL UNION语句选择具有特定值的两列,并选择另外两列具有另一个特定值

时间:2017-03-02 02:59:36

标签: mysql sql

我在S / O上搜索过这个问题但是找不到任何东西。 我想要做的是两个选择两行包含一个值加上两行包含另一个值。 像:

Row1: val:1
Row1: val:1
Row2: val:20
Row3: val:20

我的意思是:

SELECT * FROM breakfast WHERE valueforunit = '1' LIMIT 2 
UNION ALL 
SELECT * FROM breakfast WHERE valueforunit = '20' LIMIT 2

但抛出了一个例外

  

LIMIT子句应该在UNION ALL之后而不是

之前

但我想让它准确地返回带有第一个值的两行和带有第二个值的两行。 而且我希望选择也是随机的。像:

SELECT * FROM breakfast WHERE valueforunit = '1' ORDER BY RAND() LIMIT 2 
UNION ALL 
SELECT * FROM breakfast WHERE valueforunit = '20'ORDER BY RAND() LIMIT 2

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

将括号中UNION的两部分包裹起来:

(SELECT * FROM breakfast WHERE valueforunit = '1' ORDER BY RAND() LIMIT 2)
UNION ALL 
(SELECT * FROM breakfast WHERE valueforunit = '20' ORDER BY RAND() LIMIT 2)