【发布时间】:2013-03-06 13:52:21
【问题描述】:
从表面上看,我的用例非常简单。我有两张桌子:order 和 line。 order 包含id 和datetime,line 在order 表中引用了id。不幸的是,这是一个非常旧的系统,我不能(即不允许修改系统)使用带有更新/删除触发器的外键。
我是reading this question,并编写了自己的查询来做类似的事情。基本上我想在删除订单时删除与order 关联的所有lines,只要该订单超过两年:
DELETE a
FROM
`line` AS a
LEFT JOIN `order` AS b ON a.`order_id` = b.`id`
WHERE
b.`datetime` < DATE_SUB(NOW(), INTERVAL 2 YEAR);
目前什么都没有发生 - 没有行受到影响。将查询更改为仅选择,使用相同的连接和 where 子句,可以很好地返回许多结果。
我在这里错过了什么?
【问题讨论】:
-
试试改成
DELETE a.* FROM...