【mysql】SQL自连接:什么时候需要,什么时候不需要?
SQL自连接:什么时候需要,什么时候不需要?
通过具体示例和对比解析,彻底搞懂SQL自连接的使用场景
在处理SQL查询时,尤其是当表中存在自引用关系(如referee_id
引用同一张表的id
)时,很多开发者会疑惑:这个查询到底需不需要自连接?本文将通过多个具体示例,带你彻底弄清何时只需简单筛选,何时必须使用自连接。
一、一个引子:为什么这个查询不需要自连接?
来看一个经典问题:
题目:寻找用户推荐人
表结构如下:
CREATE TABLE Customer (id INT PRIMARY KEY,name VARCHAR(255),referee_id INT
);
要求:找出所有被非2号用户推荐,或没有被任何用户推荐的客户姓名。
很多人的第一反应:既然referee_id
引用了同一张表的id
,是不是应该自连接?
正确答案:不需要自连接。
SELECT name
FROM Customer
WHERE referee