0

使用 mysql 我正在尝试更新表,同时使用基于从同一个表中选择的条件。这是我在运行更新时遇到的错误:'您不能在 FROM 子句中指定目标表'订单'进行更新'

这是我正在运行的查询

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

3 回答 3

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);
于 2012-08-02T21:01:42.670 回答
1

您可以这样重写该查询:

UPDATE    orders
    SET   order_id = '10000'
    WHERE user_id = 4
    ORDER BY order_id DESC
    LIMIT 1;

如果您的标准比这更复杂,那么解决方法将是别名临时结果集,正如 Usman Tiono 指出的那样。

于 2012-08-02T16:34:15.850 回答
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);

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

于 2012-08-02T16:30:24.483 回答