sql >> Databáze >  >> RDS >> Mysql

Tabulka zadaná dvakrát v postupu, jak opravit?

Myslím, že chcete korelovaný poddotaz:

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

Změnil jsem/opravil jsem spoustu dalších věcí:

  • Aliasy tabulek usnadňují psaní a čtení dotazu.
  • Zpětná zatržítka znesnadňují psaní a čtení dotazu.
  • Podmínky pouze u aktualizované tabulky by měly být ve vnějším WHERE , nikoli vnitřní WHERE .
  • Nastavení proměnných v EXISTS poddotaz prostě nedává smysl. EXISTS testuje, zda řádky existovat. Logicky by se mohl spustit bez vyhodnocení SELECT .



  1. Jak importovat soubor .dmp (Oracle) do MySql DB?

  2. jak získat všechny výsledky n-tice mysql a převést na json

  3. Kolekce Oracle PL/SQL – Přidání prvků do existující tabulky

  4. MySQL SUM se stejným ID