删除id最大的地方

Too*_*ooL 4 mysql

我想用最大的order_id来检测行,我试过这个:

DELETE FROM orders WHERE MAX(order_id)
Run Code Online (Sandbox Code Playgroud)

但这是错的!还有其他想法吗?

感谢您的时间.

ype*_*eᵀᴹ 9

第一个想法(在许多其他完全相同的想法):

DELETE FROM orders 
WHERE order_id = 
      ( SELECT MAX(order_id)
        FROM orders
      )
Run Code Online (Sandbox Code Playgroud)

不幸的是MySQL抱怨:

> ERROR 1093 (HY000): You can't specify target table 'orders' for update in FROM
> clause
Run Code Online (Sandbox Code Playgroud)

两种绕过错误的方法:

DELETE FROM orders 
WHERE order_id =
       ( SELECT maxo
         FROM  
           ( SELECT MAX(order_id) AS maxo
             FROM orders
           ) AS tmp
        )
Run Code Online (Sandbox Code Playgroud)

要么:

DELETE FROM orders
ORDER BY order_id DESC
LIMIT 1 
Run Code Online (Sandbox Code Playgroud)


Bil*_*win 6

对于MySQL,这将是最简单的:

DELETE FROM orders
ORDER BY order_id DESC
LIMIT 1;
Run Code Online (Sandbox Code Playgroud)

你不能做其他几个人已经回答的子查询技巧,因为如果你从一个表中选择并在同一个查询中更新/删除它,MySQL就不喜欢它了.