删除缺少链接的条目

时间:2013-06-22 01:18:21

标签: mysql mysqli

我有两张桌子

第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的每个条目。

1 个答案:

答案 0 :(得分:1)

使用LEFT JOIN查找没有匹配项的行并删除它们。

DELETE produkte.*
FROM produkte
LEFT JOIN adresse
ON produkte.anbieter = adresse.id
WHERE adresse.id IS NULL

LEFT JOININNER JOIN类似,除非左表中有一行(produkte),右表(adresse)中没有与之匹配的行ON条件。 INNER JOIN会将行留在结果之外,LEFT JOIN会在所有右表的列中返回NULL行。然后,您可以使用WHERE <right-table>.<column> = NULL查找不匹配的行。

有关不同类型连接的更多说明,请参阅:

A Visual Explanation of SQL Joins