MySQL還允許在DELETE語(yǔ)句中使用INNER JOIN子句來(lái)從表中刪除和另一個(gè)表中的匹配的行記錄夜牡。
例如,要從符合指定條件的T1和T2表中刪除行記錄遥昧,請(qǐng)使用以下語(yǔ)句:
DELETE T1, T2
FROM T1
INNER JOIN T2 ON T1.key = T2.key
WHERE condition
請(qǐng)注意阁危,將T1和T2表放在DELETE和FROM關(guān)鍵字之間涉茧。如果省略T1表鸥诽,DELETE語(yǔ)句僅刪除T2表中的行記錄商玫。 同樣,如果省略了T2表牡借,DELETE語(yǔ)句將只刪除T1表中的行記錄拳昌。
表達(dá)式T1.key = T2.key指定了將被刪除的T1和T2表之間的匹配行記錄的條件。
WHERE子句中的條件確定T1和T2表中要被刪除的行記錄蓖捶。
我們經(jīng)常在SELECT
語(yǔ)句中使用[LEFT JOIN]子句來(lái)查找左表中以及右表中不匹配行的行記錄地回。
我們還可以在DELETE
語(yǔ)句中使用LEFT JOIN
子句刪除表(左表)中沒(méi)有與其他表(右表)中的匹配的行記錄扁远。
以下語(yǔ)法說(shuō)明如何使用DELETE
語(yǔ)句與LEFT JOIN
子句來(lái)刪除與T2
表中沒(méi)有相應(yīng)匹配行的表T1
中的行記錄:
DELETE T1
FROM T1
LEFT JOIN
T2 ON T1.key = T2.key
WHERE
T2.key IS NULL;
請(qǐng)注意俊鱼,我們只將T1表放在DELETE關(guān)鍵字之后,而不是像INNER JOIN子句那樣使用兩個(gè)表名:T1和T2畅买。