从一个 table 中删除,其中外键上的字段小于 MySQL 中的值

Deleting from one table where a field on a foreign key is less than value in MySQL

我有一个名为 'order' 的数据库 table,它通过外键引用另一个名为 'delivery' 的 table。我需要删除在特定日期之前修改的交付,但在删除引用它们的订单之前我不能这样做。

所以我需要删除在特定日期之前修改交货的订单。我在 MySQL 中写了以下查询:

DELETE FROM `order`,`delivery` WHERE order.delivery_id = delivery.id AND delivery.modifiedOn < '2016-2-28 23:59:59'

但是我收到 SQL 错误:

1064 - 您的 SQL 语法有误;查看与您的 MySQL 服务器版本相对应的手册,了解在附近使用的正确语法: 'WHERE order.delivery_id = delivery.id AND delivery.modifiedOn < '2016-'

我以前没有做过这种查询,我怀疑我需要在某个地方使用 JOIN 但不确定在哪里 - 任何建议将不胜感激。

这是您要查找的语法:

DELETE o, d
    FROM `order` o JOIN
         `delivery` d
         ON o.delivery_id = d.id 
    WHERE d.modifiedOn < '2016-02-29';

备注:

  • 不要命名 table order。在MySQL中是保留字,在SQL中是关键字。 Orders怎么样?
  • 学习使用正确的 JOIN 语法,即使在非 SELECT 查询中也是如此。
  • Table 别名使查询更易于编写和阅读。
  • 时间比较不需要包含 HH:MM:SS。
  • 你知道 2016 年 2 月实际上有 29 天吗?
  • 最后,级联删除外键引用将简化处理。