Joindre des tables sur des numéros de ligne dans SQL Server 2008
Pour effectuer une jointure interne sur des numéros de ligne dans SQL Server 2008, la méthode ROW_NUMBER() la fonction entre en jeu. Considérons l'exemple fourni :
Tableaux :
Sortie souhaitée :
Solution avec une clause Order By :
Pour joindre les tables en fonction des numéros de ligne, utilisez la fonction ROW_NUMBER() avec une clause ORDER BY :
select A.val,B.val from( SELECT val,row_number() over (order by val) as row_num FROM A)A join (SELECT val,row_number() over (order by val) as row_num FROM B)B on A.row_num=B.row_num ORDER BY A.val,B.val
Sortie :
Cette requête produira le sortie souhaitée :
Solution sans commande par Clause :
Si vous n'avez pas de clause order by, l'attribution des numéros de ligne avec la fonction ROW_NUMBER() triera toujours les valeurs dans un ordre arbitraire. Les lignes de la sortie apparaîtront dans le même ordre que dans les tables d'origine :
select A.val,B.val from( SELECT val,row_number() over (order by (select null)) as row_num FROM A)A join (SELECT val,row_number() over (order by (select null)) as row_num FROM B)B on A.row_num=B.row_num ORDER BY A.val,B.val
Sortie :
Encore une fois, cette requête produira le résultat souhaité, mais l'ordre des lignes peut différer :
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!