sql >> Database teknologi >  >> RDS >> Mysql

Tabel specificeret to gange i Procedure, hvordan rettes?

Jeg tror, ​​du vil have en korreleret underforespørgsel:

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

Jeg ændrede/rettede en masse andre ting:

  • Tabelaliasser gør forespørgslen nemmere at skrive og læse.
  • Backticks gør forespørgslen sværere at skrive og læse.
  • Betingelser kun på den tabel, der opdateres, skal være i den ydre WHERE , ikke den indre WHERE .
  • Indstilling af variabler i en EXISTS underforespørgsel giver simpelthen ikke mening. EXISTS tester om rækker eksisterer. Logisk set kunne den køre uden nogensinde at evaluere SELECT .



  1. execSQL() med OPDATERING opdateres ikke

  2. Hvordan viser man kategori og underkategori?

  3. DatabaseError:"ikke alle argumenter konverteret under strengformatering", når jeg bruger pandas.io.sql.to_sql()

  4. symfony 1.4 propel:build-all virker ikke på Mysql 5.5