Mysql:用外键删除两个表中的行

标签 mysql

我有两个包含数据的表。 我想删除两个表中的行。 但是我在它们之间有外键。 我该怎么做?

 departure
     id    departure_date
      1        2016-09-29
      2        2016-09-30

 departure_time
     id    departure_id (fk)
      1         1
      2         2

最好的办法是使用一个查询来删除所有行,并同时删除两个表中的行。 有没有办法在不删除约束/FK 的情况下执行此操作?

在这个例子中,假设我想删除从日期 2016-09-30 开始的所有出发

(删除departure: id 2和departure_time: id: 2)

最佳答案

请试试这个,希望它会有所帮助。

DELETE FROM departure, departure_time
USING departure
INNER JOIN departure_time
WHERE departure_date = '2016-09-30'
      AND departure_time.id = departure.id

或者

DELETE FROM departure, departure_time
USING departure
INNER JOIN departure_time
WHERE departure_date = '2016-09-30'
      AND departure_time.departure_id = departure.id

或者您可以使用 ON DELETE CASCADE 它将自动为您工作。

关于Mysql:用外键删除两个表中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39768995/

相关文章:

php - 多次更新的 MySQL 过程

MySQL 通过返回不需要的结果使用 COUNT、LEFT JOIN 和 GROUP

mysql - 每个不同列值的自动编号和重置计数

PHP MySQL 多个 SQL 查询或每个查询的 JOIN

mysql - OpenShift 无法访问 MySQL 服务器

两张表之间的Mysql操作,并希望在一张表中输出

php - 从 sum 中将一个可选值插入到数据库列中

php - 如何将 mysqli_stmt_bind_param 用于整数?

mysql - SQL 内连接表

php - Mysql如何获取数据库中多列的SUM