温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何统计Inner Join行数

发布时间:2026-11-02 03:51:32 来源:亿速云 阅读:100 作者:小樊 栏目:数据库

统计 INNER JOIN 后的行数,本质上就是先 JOIN,再对结果集计数。下面按常见场景说明。


一、最基础写法(统计 JOIN 后的总行数)

SELECT COUNT(*)
FROM A
INNER JOIN B
  ON A.id = B.a_id;

✅ COUNT(*) 统计的是 JOIN 后的结果行数
⚠ 如果 B 中多条匹配 A 的一条,行数会大于 A 的行数


二、统计某一侧匹配到的行数(去重)

1️⃣ 统计 A 中有多少行成功 JOIN 到 B

SELECT COUNT(DISTINCT A.id)
FROM A
INNER JOIN B
  ON A.id = B.a_id;

2️⃣ 统计 B 中有多少行参与 JOIN

SELECT COUNT(*)
FROM B
INNER JOIN A
  ON B.a_id = A.id;

三、先统计再 JOIN(性能更好,常见模式)

如果你只是想知道“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 vs LEFT JOIN 行数

-- 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(列) 快
  • ✅ 大表建议:
    • 在 JOIN 字段上建索引
    • 或先聚合再 JOIN
  • ❌ 避免在 COUNT 里写复杂表达式

如果你有:

  • 具体数据库(MySQL / PostgreSQL / SQL Server)
  • 表结构
  • 想统计的是“总条数 / 去重条数 / 每组条数”

可以直接贴出来,我可以给你最优 SQL。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手