好的,这是这笔交易: 我在MySql-database中有两个表:
**custwishes**
userid
wishid
**coursewishes**
wishid
coursename
wishmonth
" custwishes.userid"对users-table的引用,custwishes.wishid与" coursewishes.wishid"相同。
现在我想从课程中删除所有记录,其中coursewishes.wishid = custwishes.wishid AND custwishes.userid =?。
我可以使用php完成此操作,收集所有必要的ID并在循环中为这些id进行删除查询,但这似乎不是一个好主意。< / p>
我甚至不知道我应该为这个问题提出什么样的标题,所以我希望它不会太误导。
任何帮助都会受到赞赏!
更新07082014:13:28
我尝试过&#34; Ende Neu&#34;的方法,但没有运气。这个建议会从我们的意愿中删除,而不是像我希望的那样。我试过这个修改过的版本:
DELETE
FROM coursewishes
WHERE coursewishes.wishid
IN (
SELECT wishid
FROM custwishes
)
AND custwishes.userid = 5
这显然会导致错误,因为系统找不到custwishes.userid。
也许有一种方法可以使用JOIN或类似的东西?我会发现并发布会发生的事情。
更新11082014:12:01
今天回到了问题,我设法让级联工作。问题是,我让级联做错了。 :)意思是它从课程中流传到委托,而不是像它应该的那样相反。
答案 0 :(得分:0)
您可以在DELETE语句中使用JOIN。
如果您只想从课程中删除,请使用此声明
DELETE coursewishes
FROM coursewishes
JOIN custwishes ON coursewishes.wishid = custwishes.wishid
WHERE custwishes.userid = 5;
如果要从两个表中删除,请使用
DELETE coursewishes, custwishes
FROM coursewishes
JOIN custwishes ON coursewishes.wishid = custwishes.wishid
WHERE custwishes.userid = 5;
ON DELETE级联仅在一个方向上工作。