Je sais donc que dans MySQL , il est possible d'insérer plusieurs lignes dans une même requête, comme ceci:
INSERT INTO table (col1,col2) VALUES (1,2),(3,4),(5,6)
Je voudrais supprimer plusieurs lignes de la même manière. Je sais qu'il est possible de supprimer plusieurs lignes en fonction exactement des mêmes conditions pour chaque ligne, c'est-à-dire.
DELETE FROM table WHERE col1='4' and col2='5'
ou
DELETE FROM table WHERE col1 IN (1,2,3,4,5)
Cependant, que se passe-t-il si je souhaite supprimer plusieurs lignes dans une requête, chaque ligne ayant un ensemble de conditions unique? Quelque chose comme ce serait ce que je cherche:
DELETE FROM table WHERE (col1,col2) IN (1,2),(3,4),(5,6)
Est-ce que quelqu'un connaît un moyen de faire cela? Ou n'est-ce pas possible?
Vous étiez très proche, vous pouvez utiliser ceci:
DELETE FROM table WHERE (col1,col2) IN ((1,2),(3,4),(5,6))
S'il vous plaît voir ceci violon .
Une légère extension de la réponse donnée, donc utile, espérons-le, pour le demandeur et tous ceux qui cherchent.
Vous pouvez également SELECT
les valeurs que vous souhaitez supprimer. Mais faites attention à l'erreur 1093 - Vous ne pouvez pas spécifier la table cible pour la mise à jour dans la clause FROM.
DELETE FROM
orders_products_history
WHERE
(branchID, action) IN (
SELECT
branchID,
action
FROM
(
SELECT
branchID,
action
FROM
orders_products_history
GROUP BY
branchID,
action
HAVING
COUNT(*) > 10000
) a
);
Je voulais supprimer tous les enregistrements d'historique pour lesquels le nombre d'enregistrements d'historique pour une action/branche unique dépasse 10 000. Et grâce à cette question et réponse choisie, je peux.
J'espère que c'est utile.
Richard.