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

标签 php mysql mysqli

好的,事情是这样的: 我在 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/

相关文章:

php - 登录 php 和 mysqli

mysql - 查询以从逗号分隔值中获取计数

php - 通知 : Trying to get property of non-object in with num_rows

php - mysqli_affected_rows,mysql减去2列错误

php - 将复选框数组从 GET 传递到 POST 时参数无效

php - 对 php/MySQL 搜索结果进行排序

mysql - 右连接等于左连接?

PHP 和 Golang sha512 不同的结果

php - $_POST 没有值(value)

php - 我无法处理 php mysql 登录页面