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