我在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
有什么想法吗?
答案 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)