0

mysqlを使用して、同じテーブルからの選択に基づく基準を使用しながら、テーブルを更新しようとしています。更新の実行時に発生するエラーは次のとおりです。'FROM句で更新のターゲットテーブル'orders'を指定できません。

これが私が実行しているクエリです

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 user_id = 4
    ORDER BY order_id DESC
    LIMIT 1;

基準がこれよりも複雑な場合、回避策は、Usman Tionoが指摘したように、一時的な結果セットをエイリアシングすることです。

于 2012-08-02T16:34:15.850 に答える
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 に答える
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 に答える