带INNER JOIN的嵌套SQL查询结果行数统计方法咨询
统计带INNER JOIN的SQL查询结果行数的方法
要统计这条带INNER JOIN的SQL语句返回的行数,核心思路和你处理无JOIN的查询时一致——把原查询作为子查询,在外层用COUNT(*)来统计即可。
具体写法如下:
SELECT COUNT(*) AS result_row_count FROM ( -- 嵌入你原有的带JOIN的查询语句 SELECT COUNT(a.id), a.project_id, p.is_recommended FROM assessments a INNER JOIN projects p ON p.id = a.project_id WHERE p.is_recommended = 1 GROUP BY a.project_id, p.is_recommended -- 补充p.is_recommended到GROUP BY,避免严格SQL模式下的语法错误 HAVING COUNT(a.id) >= 3 ) AS temp_result;
额外说明
- 原查询的
GROUP BY仅指定了project_id,但SELECT中包含了p.is_recommended,在开启严格SQL模式(比如MySQL的ONLY_FULL_GROUP_BY)时会触发语法错误。由于WHERE已经限定p.is_recommended = 1,将其加入GROUP BY不会改变结果,但能保证语法兼容性。 - 外层使用
COUNT(*)比SELECT *更高效,因为不需要返回子查询的所有字段,仅需完成计数操作。
内容的提问来源于stack exchange,提问作者Fares K. A.
相关产品推荐
相关产品推荐

