好的,事情是这样的: 我在 MySql 数据库中有以下两个表:
**custwishes**
userid
wishid
**coursewishes**
wishid
coursename
wishmonth
“custwishes.userid”引用用户表,custwishes.wishid 与“coursewishes.wishid”相同。
现在我想删除 coursewishes 中的所有记录,其中 coursewishes.wishid=custwishes.wishid AND custwishes.userid=?。
我可以使用 php 来完成此操作,收集所有必要的 id 并在循环中为这些 id 进行删除查询,但这似乎不是一个好主意。
我什至不知道应该为这个问题起一个什么样的标题,所以我希望它不会太误导人。
如有任何帮助,我们将不胜感激!
更新07082014:13:28
我尝试了“Ende Neu”的方法,但没有成功。该建议从 custwishes 中删除,而不是像我希望的那样从 coursewishes 中删除。我尝试了这个修改版本:
DELETE
FROM coursewishes
WHERE coursewishes.wishid
IN (
SELECT wishid
FROM custwishes
)
AND custwishes.userid = 5
这显然会导致错误,因为系统找不到 custwishes.userid。
也许有一种方法可以使用 JOIN 或类似的东西?我会尝试一下并发布发生的情况。
更新11082014:12:01
今天回到这个问题,我设法让级联正常工作。问题是,我的级联制作方式错误。 :) 这意味着它从类(class)愿望级联到客户愿望,而不是像预期的那样反过来。
最佳答案
您可以在 DELETE 语句中使用 JOIN。
如果您只想从类(class)愿望中删除,请使用此语句
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 级联仅在一个方向起作用。
关于php - 删除 id 与其他表中相同的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25179228/