mysql - 通过子查询面对 where 子句中的两个计数
问题描述
编写如下结构的查询是否合法:
select *
from x
where Q1 >= Q2
Q1 和 Q2 都是选择计数值的查询。在 Q1 中,我提取了单个人的计数(例如),在 Q2 中,我提取了一个表,其中包含每个人的计数(通过 group by)。
解决方案
是的,这是合法的。代码如下所示:
select x.*
from x
where (select count(. . .) from . . .) >= (select count( . . . ) from . . . );
子查询周围的括号是必需的。A在子查询中group by
不合适,因为子查询可能返回多于一行。如果任一返回零行,则不会返回任何行,因为用于比较的值为.NULL
也就是说,这将是一个不寻常的结构。我建议您使用示例数据和所需结果提出另一个问题,以查看是否有其他方法来编写查询。
推荐阅读
- wso2 - 需要帮助将 sap 适配器与 wso2 集成
- google-geolocation - 使用 Google 地理编码而不是请求的 IP 地址查找指定 IP 地址的地理位置
- entity-framework - 返回每个间隔时间段时间戳的最大版本号
- mysql - 使用 SQL 查询检索具有空值的记录时面临的问题
- filter - Spotfire - 如何为范围过滤器设置值
- google-chrome - 从网页发送消息到扩展程序
- php - 取消设置 WordPress 附件字段
- java - ArrayList 只保存最后一个条目
- php - mysql和mysqli的问题
- swift - “SKNode”类型的 Swift 值没有成员“particleBirthRate”