Maison >base de données >tutoriel mysql >Comment puis-je joindre des tables SQL Server en fonction du numéro de ligne et de l'ordre des contrôles ?
Joindre des tables sur un numéro de ligne dans SQL Server
Dans SQL Server 2008, vous pouvez effectuer une jointure interne sur un numéro de ligne à l'aide du ROW_NUMBER( ) fonction. Cette fonction attribue un numéro séquentiel unique à chaque ligne d'un tableau, en fonction d'une spécification de tri facultative.
Requête pour trier verticalement les lignes jointes :
Pour joindre les tables A et B sur leurs numéros de ligne et conservez l'ordre vertical des lignes, utilisez la requête suivante :
SELECT A.val, B.val FROM ( SELECT val, ROW_NUMBER() OVER (ORDER BY val) AS row_num FROM A ) AS A JOIN ( SELECT val, ROW_NUMBER() OVER (ORDER BY val) AS row_num FROM B ) AS B ON A.row_num = B.row_num ORDER BY A.val, B.val;
Requête pour Ordre horizontal des lignes jointes :
Si vous souhaitez joindre les lignes horizontalement, sans trier, remplacez les clauses ORDER BY par la clause PARTITION BY :
SELECT A.val, B.val FROM ( SELECT val, ROW_NUMBER() OVER (PARTITION BY 1) AS row_num FROM A ) AS A JOIN ( SELECT val, ROW_NUMBER() OVER (PARTITION BY 1) AS row_num FROM B ) AS B ON A.row_num = B.row_num;
Exemple :
En utilisant les exemples de tables A et B fournis, la première requête produira ce qui suit sortie :
RowA Row1 RowB Row2 RowC Row3 RowD Row4
La deuxième requête produira cette sortie, représentant une jointure horizontale :
RowA Row4 RowB Row3 RowC Row2 RowD Row1
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!