主要來介紹下Inner Join , Full Out Join , Cross Join , Left Join , Right Join的區(qū)別。
Inner Join:篩選兩邊都有的記錄
Full Out Join:兩邊都篩選出來,匹配能匹配的,不能匹配的用NULL列出
Cross Join:列出兩邊所有組合,也稱為笛卡爾集 A×B
Left Join:以左邊的表為主表,列出主表所有記錄,匹配能匹配的,不能匹配的用 NULL列出
Right Join:以右邊的表為主表,列出主表所有記錄,匹配能匹配的,不匹配的用NULL列出
下面來看代碼:
創(chuàng)建測(cè)試表:
CREATETABLE CONSUMERS
(
CONSUMER_ID INTNOTNULL,
CONSUMER_NAME VARCHAR(10) NOTNULL
)
CREATETABLE ORDERS
(
CONSUMER_ID INTNOTNULL,
ORDER_ID VARCHAR(10) NOTNULL)
編測(cè)試數(shù)據(jù)
INSERT CONSUMERS VALUES ( 1, 'AA')
INSERT CONSUMERS values ( 2, 'BB')
INSERT CONSUMERS values ( 3, 'CC')
INSERT ORDERS VALUES ( 2, 'O100001')
INSERT ORDERS VALUES ( 3, 'O100002')
INSERT ORDERS VALUES ( 3, 'O100003')
INSERT ORDERS VALUES ( 4, 'O100004')
測(cè)試
--Inner Join
--篩選兩邊都有的記錄
SELECT *
FROM ORDERS o INNER JOIN CONSUMERS c
ON o.CONSUMER_ID = c.CONSUMER_ID
--Full Out Join
--兩邊都篩選出來,匹配能匹配的,不能匹配的用NULL列出
SELECT *
FROM ORDERS o FULL OUTER JOIN CONSUMERS c
ON o.CONSUMER_ID = c.CONSUMER_ID
--Cross Join
--列出兩邊所有組合,即笛卡爾集A×B
SELECT *
FROM ORDERS o CROSS JOIN CONSUMERS c
--Left Join
--以左邊的表為主表,列出主表所有記錄,匹配能匹配的,不能匹配的用NULL列出
SELECT *
FROM CONSUMERS c left join ORDERS o
on c .CONSUMER_ID = o .CONSUMER_ID
--Right Join
--以右邊的表為主表,列出主表所有記錄,匹配能匹配的,不能匹配的用NULL列出
SELECT *
FROM CONSUMERS c RIGHT JOIN ORDERS o
on c .CONSUMER_ID = o .CONSUMER_ID
ok了,具體的大家可以參考腳本之家以前發(fā)布的文章。
您可能感興趣的文章:- SQL之left join、right join、inner join的區(qū)別淺析
- SQL語句的并集UNION 交集JOIN(內(nèi)連接,外連接)等介紹
- 解析sql語句中l(wèi)eft_join、inner_join中的on與where的區(qū)別
- SQL Join的一些總結(jié)(實(shí)例)
- sql 左連接和右連接的使用技巧(left join and right join)
- SQL 外鏈接操作小結(jié) inner join left join right join