DELETE + JOIN + ORDER BY + LIMIT =语法错误

The*_*dic 4 mysql delete-row

掉落ORDER BY+ LIMIT,JOIN,一切都是桃子.把它们放在一起,我似乎释放了海妖.任何可以解雇的人?

DELETE table1 AS t1
FROM table1 AS t1 LEFT JOIN table2 AS t2 ON t1.id = t2.id
WHERE t2.field = 'something'
ORDER BY t1.id DESC
LIMIT 5
Run Code Online (Sandbox Code Playgroud)

(使用别名删除)

我也尝试过没有别名并放弃WHERE,但无济于事.始终是语法错误" near 'ORDER BY...".

ype*_*eᵀᴹ 10

来自Mysql文档: DELETE

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

在你的情况下,我认为这是有效的:

DELETE 
FROM table1
WHERE EXISTS
      ( SELECT t2.id
        FROM table2 AS t2
        WHERE t2.id = table1.id
          AND t2.field = 'something'
      ) 
ORDER BY id DESC
LIMIT 5
Run Code Online (Sandbox Code Playgroud)

  • 所以用外行的话来说,我可以吃馅饼*或*酷鞭子,但不能两者兼而有之。爆破。 (2认同)