Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 基于嵌套查询从表中删除SQL_Mysql_Sql_Database - Fatal编程技术网

Mysql 基于嵌套查询从表中删除SQL

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

我在mySQL数据库中有三个表:

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
             )