本文為您介紹了左串連、內串連、半串連、反串連四種Join操作類型。
Left Outer Join:
左串連。返回左表中的所有記錄,即使右表中沒有與之匹配的記錄。
SELECT
t1.id, t2.id
FROM
tj_shop AS t1
LEFT JOIN
tj_item AS t2
ON
t1.id = t2.id說明
如果右表值不唯一,建議不要連續使用過多left join,以免在JOIN過程中產生資料膨脹。
Inner Join:
內串連。關鍵字
inner可以省略。返回滿足ON條件的行。
SELECT
t1.id, t2.id
FROM
tj_shop AS t1
JOIN
tj_item AS t2
ON
t1.id = t2.id支援ON條件恒為TRUE,此時返回兩表的笛卡爾積,下述兩條SQL等價。
SELECT
t1.id, t2.id
FROM
tj_shop AS t1
JOIN
tj_item AS t2
ON
TRUE
SELECT
t1.id, t2.id
FROM
tj_shop, tj_item;Semi Join:
半串連,SEMI JOIN中,右表只用於過濾左表的資料而不出現在結果集中。
當
join條件成立時,返回左表中的資料。如果tj_shop中某行的id在tj_item的所有id中出現過,則此行保留在結果集中。
SELECT
id
FROM
tj_shop
WHERE id IN (
SELECT
id
FROM
tj_item
)SELECT
id
FROM
tj_shop
WHERE EXISTS (
SELECT
id
FROM
tj_item
WHERE
tj_shop.id = id
)Anti Join:
反串連,Anti JOIN中,右表只用於過濾左表的資料而不出現在結果集中。
當
join條件不成立時,返回左表中的資料。如果tj_shop中某行的id在tj_item的所有id中不存在,則此行保留在結果集中。
SELECT
id
FROM
tj_shop
WHERE id NOT IN (
SELECT
id
FROM
tj_item
)SELECT
id
FROM
tj_shop
WHERE NOT EXISTS (
SELECT
id
FROM
tj_item
WHERE
tj_shop.id = id
)