mysql - 如何SELECT FROM多个子查询结果的交集?

标签 mysql

首先,好消息:我只有一张 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/

相关文章:

mysql - 根据 where 条件对结果进行排序

mysql - 在什么情况下您希望 Rails 设置为不重新连接到 MYSQL

mysql - 如何从二级深度子查询中选择列?

mysql - ShoreTel 数据库中的哪个位置处理实时调用?

mysql - 递增和返回值的函数 (MySQL)

mysql - PHP 在迁移失败的情况下恢复数据

php - 使用 SQL 查询获取所有 Magento 类别

mysql - 是否可以更改数据库的 mysql 转储文件中的数据类型?

mysql - MySQL 查询结果中某些键的默认值而不是 `null`

php - MySql 中 Oracle 序列的替代方案