繁体   English   中英

在mysql上组合4个SELECT查询

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM