2017-03-02 66 views
0

我在S/O上搜索此问题但找不到任何内容。 我想要做的是两个选择两行包含一个值加两行包含另一个值。 像:MySQL UNION声明选择两个具有特定值的列并选择另外两个具有其他特定值的列

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毕竟不是

但我希望它完全返回两行t他第一个值和两行与第二个值。 我想要的选择也是随机的。像:

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

有什么想法?

回答

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) 
相关问题