从一个 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 天吗?
- 最后,级联删除外键引用将简化处理。
我有一个名为 '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 天吗?
- 最后,级联删除外键引用将简化处理。