统计 INNER JOIN 后的行数,本质上就是先 JOIN,再对结果集计数。下面按常见场景说明。
SELECT COUNT(*)
FROM A
INNER JOIN B
ON A.id = B.a_id;
✅ COUNT(*) 统计的是 JOIN 后的结果行数
⚠ 如果 B 中多条匹配 A 的一条,行数会大于 A 的行数
SELECT COUNT(DISTINCT A.id)
FROM A
INNER JOIN B
ON A.id = B.a_id;
SELECT COUNT(*)
FROM B
INNER JOIN A
ON B.a_id = A.id;
如果你只是想知道“A 中每个分组匹配了多少 B”:
SELECT A.id, cnt.b_count
FROM A
INNER JOIN (
SELECT a_id, COUNT(*) AS b_count
FROM B
GROUP BY a_id
) cnt
ON A.id = cnt.a_id;
-- INNER JOIN:只统计能匹配上的
SELECT COUNT(*)
FROM A
INNER JOIN B ON A.id = B.a_id;
-- LEFT JOIN:包括未匹配上的
SELECT COUNT(*)
FROM A
LEFT JOIN B ON A.id = B.a_id;
COUNT(*) 比 COUNT(列) 快COUNT 里写复杂表达式如果你有:
可以直接贴出来,我可以给你最优 SQL。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。