Varbūt ne visi ir pamanījuši, bet MySQL jau kopš 4.0 versijas piedāvā iespēju dzēst vienlaicīgi no vairāk tabulām ar vienu pieprasījumu. Izskatās tas, piemēram, šādi:

DELETE
    x,y,z
FROM
    `tabulax` x,
    `tabulay` y,
    `tabulaz` z
WHERE
    x.id = 1 AND
    x.id = y.tabulax_id AND
    y.id = z.tabulay_id

Šis pieprasījums no tabulasx izdzēstu ierakstu ar id vērtību 1 un no tabulasy ierakstu, kam tabulax_id vērtība ir vienāda tabulas_x vērtību id. Un tā tālāk. Respektīvi - parasts džoins (sql join). Manos piemēros ir kross-džoins, bet var izmantot jebkuru citu džoina veidu.

Ir iespējams arī atlasīšanai izmantot vairāk tabulas, bet dzēst tikai no dažām:

DELETE
    x
FROM
    `tabulax` x,
    `tabulay` y
WHERE
    ...

Alternatīva sintakse:

DELETE FROM
    x
USING
    `tabulax` x,
    `tabulay` y
WHERE
    ...

Dzēšot no vairākām tabulām vienlaicīgi, jāatceras, ka nav iespējams izmantot LIMIT vai ORDER BY.

Padoms: Varbūt tas ir pašsaprotami, bet rakstot pieprasījumus, lai dzēstu no vairākām tabulām reizē, necentieties uzreiz rakstīt sākot ar DELETE .... Labāk vispirms uzrakstiem parastu SELECT pieprasijumu, un tad, kad redzat, ka atlasās pareizie dati, tad vienkārši nomainiet to SELECT pret DELETE.

Resursi: