[英]Combine 4 SELECT queries on mysql
我试图结合这3个mysql语句。 我一直在使用UNION和JOIN关键字,但它没有提出我想要的输出。 有什么建议? 这是我的3个陈述。
SELECT * FROM entrancequestion
WHERE Subject='Abstract Reasoning'
ORDER BY RAND()
LIMIT 10
SELECT * FROM entrancequestion
WHERE Subject='English'
ORDER BY RAND()
LIMIT 30
SELECT * FROM entrancequestion
WHERE Subject='Mathematics'
ORDER BY RAND()
LIMIT 30
SELECT * FROM entrancequestion
WHERE Subject='Science'
ORDER BY RAND()
LIMIT 30
我尝试结合前两个语句,如下所示:
SELECT * FROM entrancequestion
WHERE Subject='Abstract Reasoning'
LIMIT 10
UNION
SELECT * FROM entrancequestion
WHERE Subject='English'
ORDER BY RAND()
LIMIT 30;
但是它只读取第二个LIMIT查询,其中t仅输出30行。
我想创建一个查询,其中显示总共100行并根据索引随机化。 非常感谢您的帮助。
使用UNION和LIMIT时,需要在查询中使用括号,如:
(SELECT * FROM entrancequestion WHERE Subject='Abstract Reasoning' LIMIT 10)
UNION
(SELECT * FROM entrancequestion WHERE Subject='English' ORDER BY RAND() LIMIT 30);
引用文档 ,
要将ORDER BY或LIMIT应用于单个SELECT,请将子句放在包含SELECT的括号内:
(SELECT * FROM entrancequestion
WHERE Subject='Abstract Reasoning'
ORDER BY RAND()
LIMIT 10)
UNION
(SELECT * FROM entrancequestion
WHERE Subject='English'
ORDER BY RAND()
LIMIT 30)
UNION
(SELECT * FROM entrancequestion
WHERE Subject='Mathematics'
ORDER BY RAND()
LIMIT 30)
UNION
(SELECT * FROM entrancequestion
WHERE Subject='Science'
ORDER BY RAND()
LIMIT 30 )
试试这个:
SELECT TOP 10 * FROM entrancequestion
WHERE Subject='Abstract Reasoning'
UNION
SELECT TOP 30 * FROM entrancequestion
WHERE Subject='English'
ORDER BY RAND()
如果你对第一个有LIMIT 10
人不太在意:
SELECT * FROM entrancequestion
WHERE
Subject='Abstract Reasoning' OR
Subject='English' OR
Subject='Mathematics' OR
Subject='Science'
ORDER BY RAND()
LIMIT 30
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.