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

MySQL DELETE FROM med underforespørgsel som betingelse

For andre, der finder dette spørgsmål søger at slette, mens de bruger en underforespørgsel, efterlader jeg dig dette eksempel for at overliste MySQL (selvom nogle mennesker synes at tro, at det ikke kan lade sig gøre):

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

vil give dig en fejl:

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

Men denne forespørgsel:

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

vil fungere fint:

Query OK, 1 row affected (3.91 sec)

Pak din underforespørgsel ind i en ekstra underforespørgsel (her kaldet x), og MySQL vil med glæde gøre, hvad du beder om.



  1. Hvordan ved man, hvilken partition der vil blive brugt i Postgres hash partitionering?

  2. En guide til PubNub-funktioner

  3. PostgreSQL-implementering og vedligeholdelse med Ansible

  4. PostgreSQL vs. Oracle:forskel i omkostninger, brugervenlighed og funktionalitet