我在 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 clause should come after UNION ALL not before
但我希望它准确地返回具有第一个值的两行和具有第二个值的两行。 我也希望选择是随机的。喜欢:
SELECT * FROM breakfast WHERE valueforunit = '1' ORDER BY RAND() LIMIT 2
UNION ALL
SELECT * FROM breakfast WHERE valueforunit = '20'ORDER BY RAND() LIMIT 2
有什么想法吗?
最佳答案
将 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)
关于MySQL UNION 语句选择两个具有特定值的列并选择另外两个具有另一个特定值的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42546038/