首页 > 解决方案 > 通过子查询面对 where 子句中的两个计数

问题描述

编写如下结构的查询是否合法:

select *
from x
where Q1 >= Q2

Q1 和 Q2 都是选择计数值的查询。在 Q1 中,我提取了单个人的计数(例如),在 Q2 中,我提取了一个表,其中包含每个人的计数(通过 group by)。

标签: mysqlsql

解决方案


是的,这是合法的。代码如下所示:

select x.*
from x
where (select count(. . .) from . . .) >= (select count( . . . ) from . . . );

子查询周围的括号是必需的。A在子查询group by不合适,因为子查询可能返回多于一行。如果任一返回零行,则不会返回任何行,因为用于比较的值为.NULL

也就是说,这将是一个不寻常的结构。我建议您使用示例数据和所需结果提出另一个问题,以查看是否有其他方法来编写查询。


推荐阅读