sql >> データベース >  >> RDS >> Mysql

手順で2回指定されたテーブル、修正方法は?

    相関サブクエリが必要だと思います:

    UPDATE ordersperformers op
        SET op.Status = 1    
    WHERE op.Status = 0 AND
          op.Orders_Id = @v_order_id AND
          op.Users_Id = @v_user_id AND
          EXISTS (SELECT  1
                  FROM orders o
                  WHERE o.id = op.Orders_Id AND
                        NOW() <= DATE_SUB(o.DeliveryDate, INTERVAL 2 HOUR) AND
                        o.Status = 0 
                 );
    

    私は他の多くのものを変更/修正しました:

    • テーブルエイリアスを使用すると、クエリの書き込みと読み取りが簡単になります。
    • バックティックを使用すると、クエリの書き込みと読み取りが困難になります。
    • 更新されるテーブルの条件は、外側のWHEREにある必要があります 、内側のWHEREではありません 。
    • EXISTSで変数を設定する サブクエリは単に意味がありません。 EXISTS かどうかをテストします 存在。論理的には、SELECTを評価しなくても実行できます。 。



    1. PHPとmySQLを使用して画像をアップロードする

    2. SQLServerで「代わりの」トリガーを作成する

    3. Oracle-リテラルがフォーマット文字列エラーと一致しません

    4. innodb_buufer_pool _size / RAMを犠牲にして、query_cache_size用のスペースを作る必要がありますか?