如何获取MySQL分组查询的返回行数(转为单个整数)
获取分组查询结果行数的两种实用方法
嘿,要拿到你那个分组查询返回的行数其实很简单,这里有两种靠谱方案,你可以根据需求选:
方案一:基于原查询包装统计
把你现有的分组查询当成子查询,在外层用COUNT(*)统计它的行数就好。注意MySQL要求子查询必须有别名,这里我用subquery举例:
SELECT COUNT(*) FROM ( SELECT ot.id, COUNT(ot.id) FROM ot JOIN tm on tm.mediaid = ot.id WHERE tm.uploadedToS3 = 1 AND ( ot.something IN (1) OR ot.somethingelse IN (1) OR ot.anotherthing IN (1) OR ot.morestuff IN (1) OR ot.evenmorestuff IN (1) ) GROUP BY ot.id ) AS subquery;
这个方法完全沿用你原有的查询逻辑,只是套了一层统计,返回结果就是你要的整数(比如你示例里的10)。
方案二:直接统计唯一ID(更高效)
其实你根本不需要先计算每个ID的匹配数,直接统计符合条件的唯一ot.id数量就行,这样能避免分组操作的额外开销,性能更好:
SELECT COUNT(DISTINCT ot.id) FROM ot JOIN tm on tm.mediaid = ot.id WHERE tm.uploadedToS3 = 1 AND ( ot.something IN (1) OR ot.somethingelse IN (1) OR ot.anotherthing IN (1) OR ot.morestuff IN (1) OR ot.evenmorestuff IN (1) );
这个语句和方案一返回的结果完全一致,但执行效率通常更高——它不需要先分组再统计,直接一步到位得到目标整数。
内容的提问来源于stack exchange,提问作者sdexp
相关产品推荐
相关产品推荐

