Comme MySQL ne supporte encore ni les sous-requêtes, ni
l'utilisation de plusieurs tables dans une requête
DELETE
(avant la version 4.0), vous devez
utiliser l'approche suivante pour effacer des lignes de deux
tables reliées :
Sélectionnez (SELECT
) les lignes de la
table principale en vous basant sur une condition
WHERE
.
Effacez (DELETE
) les lignes de la table
principale en vous basant sur la même condition.
DELETE FROM table_liée WHERE colonne_liée IN
(lignes_séléctionnées)
.
Si le nombre total des caractères dans la requête avec la
colonne_liée
est supérieur à 1,048,576 (la
valeur par défaut est max_allowed_packet
,
vous devez la découper en parties plus petites et exécuter
plusieurs DELETE
. Vous obtiendrez
probablement les suppressions les plus rapides en n'effa¸ant
que 100-1000 colonne_liée
par requête si
colonne_liée
est un index. Si ce n'est pas
un index, la vitesse est indépendante du nombre d'arguments
dans la clause IN
.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.