Mysql 基于嵌套查询从表中删除SQL
我在mySQL数据库中有三个表:Mysql 基于嵌套查询从表中删除SQL,mysql,sql,database,Mysql,Sql,Database,我在mySQL数据库中有三个表: orders: order_sequence_number, contact_id, date_ordered ... orderdetail: order_sequence_number ... person: contact_id ... 我试图删除三个表中日期排序值早于两年的所有行,但是,日期排序字段仅出现在订单表中,但该表通过订单顺序编号和联系人id字段链接到其他两个 所以,我的想象有点像这样: SELECT * FROM orders WHERE
orders: order_sequence_number, contact_id, date_ordered ...
orderdetail: order_sequence_number ...
person: contact_id ...
我试图删除三个表中日期排序值早于两年的所有行,但是,日期排序字段仅出现在订单表中,但该表通过订单顺序编号和联系人id字段链接到其他两个
所以,我的想象有点像这样:
SELECT * FROM orders WHERE date_ordered BETWEEN X AND Y
那就凭那张唱片
DELETE FROM orderdetail WHERE orderdetail.order_sequence_number IN (THE ABOVE)
等人表。。。但是没有运气
在我看来,似乎是某种嵌套子查询,但我很难理解如何进行这种查询,也无法理解它的复杂本质
任何指点都将不胜感激。这正是您所写的内容:
DELETE FROM orderdetail WHERE orderdetail.order_sequence_number IN (
SELECT distinct(order_sequence_number) FROM orders WHERE date_ordered BETWEEN X AND Y
)
这和你写的差不多:
DELETE FROM orderdetail WHERE orderdetail.order_sequence_number IN (
SELECT distinct(order_sequence_number) FROM orders WHERE date_ordered BETWEEN X AND Y
)
如果您有一个大表
订单
,最好使用
如果您有一个大表
订单
,最好使用
DELETE FROM orderdetail od
WHERE EXISTS ( SELECT NULL
FROM orders o
WHERE date_ordered BETWEEN X AND Y
and od.order_sequence_number = o.order_sequence_number
)