使用order by和MySQL中的多个表删除

时间:2014-04-20 14:40:43

标签: mysql sql

对具有Limit和ORDERBY的单个表使用delete语句时,其工作正常

DELETE FROM test_users_table  ORDER BY test_users_table_cname DESC
LIMIT 5

我们是否也可以使用ORDER BY AND LIMIT选项在多个表中实现删除..

以下是我正在使用的内容

  DELETE test_users_table, test_user_data_table FROM test_users_table 
    JOIN test_user_data_table 
    ON test_users_table.table1_id = test_user_data_table.table2_userid
    ORDER BY test_users_table.cname DESC
    LIMIT 5

对于多个表,它的抛出错误

1 个答案:

答案 0 :(得分:2)

根据MySQL documentation,这是从多个表中删除的语法:

DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
tbl_name[.*] [, tbl_name[.*]] ...
FROM table_references
[WHERE where_condition]

另外它说:

  

对于多表语法,DELETE从每个tbl_name中删除满足条件的行。 在这种情况下,无法使用ORDER BY和LIMIT。

因此,您可以从多个表中删除。但是,您无法直接在其中使用LIMIT关键字。

您查询的假设语义是什么?该语句是否应删除表A中的前5个条目,表B或每个表中的5个条目?此信息可能有助于重新构建您的查询。