Cela devrait être une question directe, mais je n'ai pas encore trouvé de réponse claire. Est-ce que quelqu'un sait comment supprimer plusieurs lignes d'une seule table dans SQL Server 2005, en utilisant une seule requête? Je me demandais si cela pourrait simplement être le contraire de l'insertion de plusieurs lignes, à l'aide de la méthode Union code>. Alors cela fonctionnerait-il? :
3 Réponses :
Vous pouvez essayer ceci:
DELETE FROM YourTable WHERE (Name = 'Name1' AND Location = 'Location1') OR (Name = 'Name2' AND Location = 'Location2') OR (Name = 'Name3' AND Location = 'Location3')
Une gamme où la clause pourrait être appropriée, si vous dites voulu supprimer une collection avant une certaine date.
DELETE FROM T FROM YourTable T INNER JOIN ( SELECT 'Name1' AS Name, 'Location1' AS Location UNION ALL SELECT 'Name2', 'Location2' UNION ALL SELECT 'Name3', 'Location3' ) T2 ON T2.Name = T.Name AND T2.Location = T.Location
à partir de
Utiliser un CTE a fonctionné pour moi - beaucoup plus facile que d'utiliser des oursiers et des crochets: Vous ne pouvez pas définir un alias de table pour la table dans une instruction DELETE; Toutes les références de colonnes sans alias de table ont pu être supposées se rapporter à la seule table sans un, mais cela dépend également de la portée. P> P>