我有两张桌子
第1名:
adresse
id name
2号:
produkte
id anbieter
详细说明:
id: int
name: string
anbieter: int
produkte中的每个anbieter都是adresse的id。例如:
adresse
id name
1 hello
2 there
produkte
id anbieter
1 1
2 1
3 2
4 1
工作,但
adresse
id name
1 hello
2 there
produkte
id anbieter
1 4
2 1
3 2
4 1
不是因为没有produkte.anbieter = 4的adresse.id
我的目标是删除其anbieter没有adresse.id的produkte的每个条目。
答案 0 :(得分:1)
使用LEFT JOIN查找没有匹配项的行并删除它们。
DELETE produkte.*
FROM produkte
LEFT JOIN adresse
ON produkte.anbieter = adresse.id
WHERE adresse.id IS NULL
LEFT JOIN
与INNER JOIN
类似,除非左表中有一行(produkte
),右表(adresse
)中没有与之匹配的行ON
条件。 INNER JOIN会将行留在结果之外,LEFT JOIN
会在所有右表的列中返回NULL
行。然后,您可以使用WHERE <right-table>.<column> = NULL
查找不匹配的行。
有关不同类型连接的更多说明,请参阅: