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 ?

Comment puis-je joindre des tables SQL Server en fonction du numéro de ligne et de l'ordre des contrôles ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-29 01:54:10595parcourir

How Can I Join SQL Server Tables Based on Row Number and Control Ordering?

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!

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