內連線、左外連線 TOTO 一對一 一對多 結果不一樣的
阿新 • • 發佈:2019-01-22
1. 簡介
2. 建表
A表
B表
注: B表的parent_id對應A表的id
3. 測試
3.1 顯式內連線
-- 顯示內連線
SELECT
A.*,
B.*
FROM
A
INNER JOIN B ON A.id = B.parent_id
3.2 隱式內連線
-- 隱式內連線
SELECT
A.*,
B.*
FROM
A, B
WHERE
A.id = B.parent_id
3.3 左外連線
3.3.1 不帶條件
-- 左外連線 SELECT A.*, B.* FROM A LEFT JOIN B ON A.id = B.parent_id
3.3.2 on 可以使用AND縮小連線表的數量 最終數量還是以A表為準
-- 左外連線 方式1:
SELECT
A.*,
B.*
FROM
A
LEFT JOIN B ON A.id = B.parent_id AND B.id > 1
3.3.3 where 確定最終數量
-- 左外連線 方式2:
SELECT
A.*,
B.*
FROM
A
LEFT JOIN B ON A.id = B.parent_id
WHERE B.id > 1
3.4 exist 只能拿A表資料
SELECT A.* FROM A WHERE EXISTS (SELECT 1 FROM B WHERE B.parent_id = A.id AND B.id > 1)