更新记录,同时从同一个表中选择更新条件?

时间:2012-08-02 16:21:11

标签: mysql sql

使用mysql我正在尝试使用基于同一表中的select的条件更新表。以下是运行更新时出现的错误:'您无法在FROM子句'

中为更新指定目标表'orders'

这是我正在运行的查询

UPDATE `orders`
   SET order_id = '10000'
 WHERE order_id = (SELECT MAX(order_id) 
                     FROM `orders`
                    WHERE user_id = 4
                  );

3 个答案:

答案 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);

您需要为子查询提供别名。