我需要更新一个表,而Where子句应该包含某一列的最后一个(或最大值),所以我做了这个查询:
UPDATE Orders
SET Ordermethod='Pickup'
WHERE orderid IN (
SELECT MAX(orderid)
FROM Orders);
但是,由于某些原因我不明白,mysql会返回此错误:
1093 - 您无法在FROM子句
中指定目标表'Bestellingen'进行更新
我尝试了不同的查询,这些查询都不起作用...... 有人可以帮忙??
抱歉蹩脚的英语
答案 0 :(得分:3)
这是MySQL的限制。 (正如the documentation所说:“目前,您无法更新表并从子查询中的同一个表中进行选择。”)您可以通过将子查询编写为(SELECT * FROM (SELECT ...) t)
来解决限制,以便MySQL将为您创建一个临时表:
UPDATE Orders
SET Ordermethod='Pickup'
WHERE orderid IN
( SELECT *
FROM ( SELECT MAX(orderid)
FROM Orders
) t
)
;
答案 1 :(得分:0)
更新订单 SET Ordermethod ='Pickup' WHERE orderid IN(SELECT MAX(orderid)FROM ( SELECT * FROM Orders ) AS c1 )