Suppression efficace des lignes supérieures dans SQL Server 2008
Imaginez une situation dans laquelle vous devez supprimer un nombre spécifique de lignes du haut de une table dans SQL Server. Bien qu'une approche intuitive puisse consister à utiliser une instruction DELETE associée à une clause TOP, vous pouvez rencontrer des problèmes où toutes les lignes sont supprimées par inadvertance. Pour résoudre ce problème, suivez les conseils suivants :
Le code que vous avez tenté d'exécuter, comme vous l'avez découvert, entraîne la suppression de toutes les lignes de votre table. En effet, le code comprend deux instructions distinctes : une instruction DELETE et une instruction SELECT avec une clause TOP. La clause TOP, sans spécifier de clause ORDER BY, ne peut pas identifier efficacement les lignes à supprimer.
Pour garantir la suppression sélective des lignes, vous devez établir les critères de classement au sein de la clause TOP. De plus, la création d'une expression de table commune (CTE) ou d'une expression de table similaire est une méthode très efficace pour supprimer un nombre défini de lignes supérieures.
L'extrait de code suivant illustre une approche plus fiable :
;WITH CTE AS ( SELECT TOP 1000 * FROM [mytab] ORDER BY a1 ) DELETE FROM CTE
Dans ce code, le CTE établit un tableau distinct, dérivé de votre tableau d'origine, en sélectionnant le nombre de lignes spécifié en fonction d'un critère de classement spécifique (dans ce cas, le colonne a1). Par la suite, l'instruction DELETE supprime les lignes de cette table temporaire, garantissant la suppression ciblée uniquement des lignes supérieures.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!