当作业包含文件时,此方法有效。它从文件表中删除文件记录,从作业表中删除作业记录,但是,如果作业没有文件,则不会发生任何操作。如果作业没有与之关联的文件,我希望它仍然从作业表中删除作业记录。
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)。当你第一次宣布桌子时,它可能不喜欢星星/星号(不确定)。
答案 0 :(得分:1)
只需使用LEFT JOIN
即可解决您的问题:
DELETE j.*, f.*
FROM jobs j
LEFT JOIN files f
ON f.jobid = j.id
WHERE j.id = $id