SQL DELETE LEFT JOIN查询

时间:2016-05-24 09:59:48

标签: mysql sql left-join

我的查询是:

DELETE p,p2,r 
FROM Profiles p
LEFT JOIN Pics p2 ON p.ID=p2.ProfileID
LEFT JOIN Food f ON p.ID=f.ProfileID
WHERE p.ID = 46

此查询删除用户的个人资料,Pics表中的所有图片以及食物表中所有匹配的ProfileID。 哪个会离开我 配置文件表中的ID 47,48 Pics表中的ID 66,67 食物表中的ID 30,31,32,34

但我希望它还删除Pics.ID ProfileID为46的所有行,因此Pics.ID为64和65.这两个ID将从Food表中删除。这将是Food.ID 30和32所以只留下: 食物表中的ID 31,34

个人资料表:

ID Gender
46 male
47 female
48 female

图片表:

ID ProfileID Position
64 46        1 
65 46        2
66 47        1
67 48        1

食物表:

ID PicID ProfileID
30 64    47
31 66    48
32 65    47
33 67    46
34 67    47

1 个答案:

答案 0 :(得分:3)

我认为这就是你想要的

DELETE p,p2,f,f2 
FROM Profiles p
LEFT JOIN Pics p2 ON p.ID=p2.ProfileID
LEFT JOIN Food f ON p.ID=f.ProfileID
LEFT JOIN Food f2 ON p2.ID=f2.PicID
WHERE p.ID = 46