删除id与其他表中相同的行

时间:2014-08-07 09:44:26

标签: php mysql mysqli

好的,这是这笔交易: 我在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

今天回到了问题,我设法让级联工作。问题是,我让级联做错了。 :)意思是它从课程中流传到委托,而不是像它应该的那样相反。

1 个答案:

答案 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级联仅在一个方向上工作。