Mysql 使用Select sub Select更新语句
我怎样才能做到这一点-给我1093-您不能在FROM子句中指定更新的目标表'Orders'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
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;