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
)
文檔內容是否對您有幫助?