使用mysql我正在尝试使用基于同一表中的select的条件更新表。以下是运行更新时出现的错误:'您无法在FROM子句'
中为更新指定目标表'orders'这是我正在运行的查询
UPDATE `orders`
SET order_id = '10000'
WHERE order_id = (SELECT MAX(order_id)
FROM `orders`
WHERE user_id = 4
);
答案 0 :(得分:1)
您可以这样重写该查询:
UPDATE orders
SET order_id = '10000'
WHERE user_id = 4
ORDER BY order_id DESC
LIMIT 1;
如果你的标准比这更复杂,那么解决方法就是像Usman Tiono指出的那样对临时结果集进行别名化。
答案 1 :(得分:1)
这是最终为我工作的解决方案:
UPDATE `orders`
SET order_id = '10000'
WHERE order_id IN(SELECT MAX(order_id)
FROM (SELECT order_id
FROM `orders` WHERE user_id = 4)
tmp);
答案 2 :(得分:0)
尝试使用它:
UPDATE orders SET order_id = '10000'
WHERE order_id = (SELECT tmp.order_id FROM (SELECT MAX(order_id) order_id FROM orders WHERE user_id = 4) AS tmp);
您需要为子查询提供别名。