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

标签 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 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/

相关文章:

php - 我想用 Eloquent laravel 5 将人们添加到组中

MySQL pdo select single column with limit 但返回一行

sql - 为什么在 WHERE 子句中使用 SQL 变量与使用相同值的常量会产生不同的结果?

sql - 在 PostgreSQL 数据库中生成序列号 - 并发和隔离级别

javascript - 我可以在 json 数据上使用 javascript 执行复杂的 SQL 样式查询吗?

PHP-获取与 api 一起使用的单元格的值

mysql - 查找哈希中特定列的总和

sql - PySpark 子查询 : Accessing outer query column is not allowed

sql - Oracle 分层查询

Mysql select查询-卡在where条件