Mysql 使用Select sub Select更新语句

Mysql 使用Select sub Select更新语句,mysql,Mysql,我怎样才能做到这一点-给我1093-您不能在FROM子句中指定更新的目标表'Orders' Update Orders set flag = 0 where orders_id = (select orders_id from orders ORDER BY orders_id DESC LIMIT 1) 您需要将其包装在子查询中,创建一个临时表 或 看起来您正在尝试更新表中的最后一个订单?试一试 Update Orders set flag = 0 ORDER BY orders_id DE

我怎样才能做到这一点-给我1093-您不能在FROM子句中指定更新的目标表'Orders'

Update Orders set flag = 0 where orders_id = (select orders_id from orders ORDER BY orders_id DESC LIMIT 1)

您需要将其包装在子查询中,创建一个临时表


看起来您正在尝试更新表中的最后一个订单?试一试

Update Orders set flag = 0 ORDER BY orders_id DESC LIMIT 1; 

Mysql不支持在子查询中使用表时更新表。

请尝试使用updateorders set flag=0,其中Orders\u id=select minorders\u id from Orders;它应该是你秒查询中的最大值,因为OP是按desc@AnandPhadke因为您需要为它创建一个临时表。我给你举个例子。请稍候:@AnandPhadke@JohnWoo您能告诉我如何获得最后一个插入id来使用此更新语句吗?我知道这与重复密钥更新id=最后一个插入id有关,但它对我无效@ManishPradhan try ON DUPLICATE KEY UPDATE id=LAST_INSERT_id为什么对这个答案投反对票,有人能解释一下吗,因为它工作得很好吗?是的,我对反对票很好奇?它避免了创建临时表和子选择,只需在1次更新中完成所有操作。您能告诉我如何使最后一次插入id使用此更新状态吗?我知道它与重复密钥更新id=最后一次插入id有关,但它对我不起作用!不确定你到底在问什么?上次插入的id在更新中没有任何意义?特别是如果是重复的keyOK的一部分,让我解释一下,就像你说的,我正在尝试更新表中的最后一个顺序。您的查询很好地做到了这一点,但我还需要更新的最后一行的ID。您的sql查询是否可以通过添加一些内容来实现?
Update Orders 
set flag = 0 
where orders_id = 
    (
        SELECT x.orders_id
        FROM
        (
            select MAX(orders_id) orders_id 
            from orders 
        ) x
    )
Update Orders set flag = 0 ORDER BY orders_id DESC LIMIT 1;