T_A A表 T_B B標,id為表與表相關聯的字段`
創建相關表結構
CREATE TABLE Table_B( id INT(2), serNum VARCHAR(10) );
CREATE TABLE Table_A( id INT(2), serNum VARCHAR(10) );
INSERT INTO table_a (id, serNum)
VALUES (1,'A000101'),(2,'A000102'),(3,'A000103'),(5,'A000104'),(8,'A000105'),(4,'A000106');
INSERT INTO table_b (id, serNum)
VALUES (1,'B000201'),(2,'B000202'),(3,'B000203'),(6,'B000204'),(7,'B000205'),(9,'B000206');
Table_A
id serNum
1 A000100
2 A000102
3 A000103
5 A000104
8 A000105
4 A000106
Table_B
id serNum
1 B000201
2 B000202
3 B000203
6 B000204
7 B000205
9 B000206
1. inner join 內連接查詢
SELECT a.*,b.*
FROM table_a a
INNER JOIN table_b b
ON a.id=b.id
查詢結果:
id serNum id serNum
1 A000100 1 B000201
2 A000102 2 B000202
3 A000103 3 B000203
2. left join 左關聯查詢
以左表作為基礎表去關聯右表,查詢的結果為左表的子集
SELECT a.*,b.*
FROM table_a a
LEFT JOIN table_b b
ON a.id=b.id
查詢結果:
id serNum id serNum
1 A000100 1 B000201
2 A000102 2 B000202
3 A000103 3 B000203
5 A000104 (NULL) (NULL)
8 A000105 (NULL) (NULL)
4 A000106 (NULL) (NULL)
3.right join 右關聯查詢
以右表作為基礎表去關聯左表,查詢的結果為右表的子集
SELECT a.*,b.*
FROM table_a a
RIGHT JOIN table_b b
ON a.id=b.id
查詢結果:
id serNum id serNum
1 A000100 1 B000201
2 A000102 2 B000202
3 A000103 3 B000203
(NULL) (NULL) 6 B000204
(NULL) (NULL) 7 B000205
(NULL) (NULL) 9 B000206
4.左連接-內連接
取左表的部分集合,但又不存在右表中
SELECT a.*,b.*
FROM table_a a
LEFT JOIN table_b b
ON a.id=b.id
WHERE b.id IS NULL
查詢結果:
id serNum id serNum
5 A000104 (NULL) (NULL)
8 A000105 (NULL) (NULL)
4 A000106 (NULL) (NULL)
5. 右連接-內連接
取有表的部分數據,但又不存在左表中
SELECT a.*,b.*
FROM table_a a
RIGHT JOIN table_b b
ON a.id=b.id
WHERE a.id IS NULL
查詢結果:
id serNum id serNum
(NULL) (NULL) 6 B000204
(NULL) (NULL) 7 B000205
(NULL) (NULL) 9 B000206