Maison >base de données >tutoriel mysql >Comment joindre intérieurement deux tables SQL Server en fonction du numéro de ligne ?

Comment joindre intérieurement deux tables SQL Server en fonction du numéro de ligne ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-05 01:36:39835parcourir

How to Inner Join Two SQL Server Tables Based on Row Number?

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 :

  • Si aucune donnée spécifique le tri est souhaité, supprimez la clause ORDER BY de la fonction ROW_NUMBER() pour conserver la ligne d'origine commander.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn