1. 程式人生 > >內連線、左外連線 TOTO 一對一 一對多 結果不一樣的

內連線、左外連線 TOTO 一對一 一對多 結果不一樣的

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)