如何从2个表中删除mysql记录,但如果第2个表中的记录仍然从第1个表中删除?

时间:2014-02-11 19:57:04

标签: mysql sql delete-row

当作业包含文件时,此方法有效。它从文件表中删除文件记录,从作业表中删除作业记录,但是,如果作业没有文件,则不会发生任何操作。如果作业没有与之关联的文件,我希望它仍然从作业表中删除作业记录。

DELETE jobs, files FROM jobs INNER JOIN files WHERE jobs.id = $id AND files.jobid = jobs.id

我尝试了以下但是没有用:

DELETE jobs, files FROM jobs INNER JOIN files WHERE jobs.id = $id OR files.jobid = jobs.id

也尝试了这个,但它不起作用:

DELETE jobs, files FROM jobs INNER JOIN files on jobs.id = files.jobid WHERE jobs.id = $id

编辑:

这是有效的。它来自下面标记为正确的答案,但略有不同。

DELETE jobs, files FROM jobs LEFT JOIN files ON files.jobid = jobs.id WHERE jobs.id = $id

它不喜欢那个短代码或其他任何东西(当人们说文件f或作业j然后他们说f.jobid或j.id)。当你第一次宣布桌子时,它可能不喜欢星星/星号(不确定)。

1 个答案:

答案 0 :(得分:1)

只需使用LEFT JOIN即可解决您的问题:

DELETE j.*, f.*
FROM jobs j
LEFT JOIN files f
    ON f.jobid = j.id
WHERE j.id = $id