首先,好消息:我只有一张 table 。
现在,我有 3 个类似的查询:
SELECT id FROM (
SELECT * FROM my_table
ORDER BY columnA
DESC LIMIT 600
) AS aliasA
WHERE (revenue > 10000);
SELECT id FROM (
SELECT * FROM my_table
ORDER BY columnB
DESC LIMIT 400, 999999999999
) AS aliasB
WHERE (revenue > 10000);
SELECT id FROM (
SELECT * FROM my_table
ORDER BY columnC
DESC LIMIT 800;
) AS aliasC
WHERE (revenue > 10000);
注意 WHERE 子句是相同的。
有没有办法组合这 3 个查询,以便我可以从 3 个子查询的交集进行搜索(查找与所有 3 个子查询以及我的 WHERE 子句匹配的行)?
顺便说一下,如果我的单个查询(合并前)可以简化,请告诉我。
谢谢!
最佳答案
SELECT ID FROM
(SELECT id FROM (
SELECT *
FROM my_table
WHERE (revenue > 10000)
ORDER BY columnA DESC
LIMIT 600
) AS aliasA) AS a
INNER JOIN (
SELECT id FROM (
SELECT *
FROM my_table
WHERE (revenue > 10000)
ORDER BY columnB DESC
LIMIT 400, 999999999999
) AS aliasB
)
AS b ON a.id = b.id
INNER JOIN (
SELECT id FROM (
SELECT *
FROM my_table
WHERE (revenue > 10000)
ORDER BY columnC DESC
LIMIT 800
) AS aliasC
)
AS c ON a.id = c.id AND b.id = c.id
然后你可以搜索这个query
关于mysql - 如何SELECT FROM多个子查询结果的交集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49593763/