sql >> Database >  >> RDS >> Mysql

MySQL VERWIJDEREN UIT met subquery als voorwaarde

Voor anderen die vinden dat deze vraag wil worden verwijderd terwijl ze een subquery gebruiken, laat ik je dit voorbeeld achter om MySQL te slim af te zijn (zelfs als sommige mensen denken dat het niet kan):

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

geeft u een foutmelding:

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

Maar deze vraag:

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

werkt prima:

Query OK, 1 row affected (3.91 sec)

Verpak uw subquery in een extra subquery (hier x genoemd) en MySQL zal graag doen wat u vraagt.



  1. Een weergave maken in PostgreSQL

  2. T-SQL XOR-operator

  3. Haal de ID op van een nieuw record dat in een database is ingevoegd uit de geretourneerde Uri

  4. Speciale eilanden