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

MySQL DELETE FROM s poddotazem jako podmínkou

Pro ostatní, kteří tuto otázku chtějí odstranit při použití dílčího dotazu, vám nechám tento příklad, jak přechytračit MySQL (i když se zdá, že si někteří lidé myslí, že to nelze udělat):

DELETE e.*
FROM tableE e
WHERE id IN (SELECT id
             FROM tableE
             WHERE arg = 1 AND foo = 'bar');

zobrazí vám chybu:

ERROR 1093 (HY000): You can't specify target table 'e' for update in FROM clause

Nicméně tento dotaz:

DELETE e.*
FROM tableE e
WHERE id IN (SELECT id
             FROM (SELECT id
                   FROM tableE
                   WHERE arg = 1 AND foo = 'bar') x);

bude fungovat dobře:

Query OK, 1 row affected (3.91 sec)

Zabalte svůj poddotaz do dalšího poddotazu (zde pojmenovaného x) a MySQL s radostí udělá, o co požádáte.



  1. Jak mám předat název tabulky do uloženého procesu?

  2. Jak volat funkci Oracle nebo uloženou proceduru pomocí frameworku spring persistence?

  3. Jak nastavit časový limit připojení v SQLAlchemy

  4. Rozměry dimenzí:Podívejte se na nejběžnější typy dimenzionálních tabulek v Data Warehousing