ROW_NUMBER() sans ORDER BY dans SQL Server 2005
Dans SQL Server 2005, la fonction ROW_NUMBER() peut être utilisée pour générer un numéro séquentiel unique pour chaque ligne d'un jeu de résultats. Cependant, contrairement à ses homologues des versions ultérieures, ROW_NUMBER() dans SQL Server 2005 nécessite une clause ORDER BY explicite. Cette limitation pose un défi lorsqu'on tente de générer des nombres séquentiels sans modifier l'ordre d'origine des données.
Solution :
Pour contourner cette limitation, nous pouvons éviter de spécifier un ordre explicite utilisant la requête suivante syntaxe :
INSERT INTO TargetTable (ID, FIELD) SELECT Row_Number() OVER (ORDER BY (SELECT 1)) + Coalesce( (SELECT Max(ID) FROM TargetTable WITH (TABLOCKX, HOLDLOCK)), 0 ), FieldValue FROM SourceTable WHERE {somecondition};
Explication :
Considérations :
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!