Maison >base de données >tutoriel mysql >Comment joindre intérieurement deux tables SQL Server en fonction du numéro de ligne ?
Jointure interne sur numéro de ligne dans SQL Server
Objectif : Effectuer une jointure interne sur deux tables en utilisant leur ligne nombres.
Scénario :
Considérez deux tables, A et B, avec les données suivantes :
Table A | Table B |
---|---|
RowA | Row4 |
RowB | Row3 |
RowC | Row2 |
RowD | Row1 |
Le but est de joindre les tables en fonction de leurs numéros de ligne et de récupérer le résultat suivant :
Table A | Table B |
---|---|
RowA | Row1 |
RowB | Row2 |
RowC | Row3 |
RowD | Row4 |
Solution :
Pour effectuer une jointure interne sur les numéros de ligne, utilisez la fonction ROW_NUMBER() comme suit :
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;
Cette requête crée une table temporaire pour chaque table d'entrée (A et B) et attribue des numéros de ligne à chaque ligne en fonction de la colonne val. Les tables sont ensuite jointes à l'aide de la colonne row_num et les résultats sont triés par la colonne val dans les deux tables.
Considérations supplémentaires :
Démo SQL Fiddle :
[Démo SQL Fiddle](https://www.sqlfiddle.com/#!18/69540/2 )
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!