SQL查询帮助 - 加入的替代方法

时间:2016-11-15 10:14:08

标签: sql

希望进行连接,我将一个表连接到另一个表上,例如品牌,并根据我放在另一个表上的排名仅加入到它的第一个记录。下面显示了两个表的简单示例和所需的输出。

由于

Table 1                 Table 2     
brand   serial no       brand   serial no   rank
toyota  x1              toyota  c4          1
toyota  x2              toyota  c5          2
toyota  x3              toyota  c6          3


Desired output                  
toyota  x1  c4          
toyota  x2  c5          
toyota  x3  c6          

1 个答案:

答案 0 :(得分:1)

您可以在子查询中使用ROW_NUMBER,类似这样。

样本数据;

CREATE TABLE #Table1 (Brand nvarchar(10), Serial_No nvarchar(2))
INSERT INTO #Table1 (Brand, Serial_No)
VALUES 
('toyota','x1')
,('toyota','x2')
,('toyota','x3')

CREATE TABLE #Table2 (Brand nvarchar(10), Serial_No nvarchar(2), Rank_No int)
INSERT INTO #Table2 (Brand, Serial_No, Rank_No)
VALUES 
('toyota','c4',1)
,('toyota','c5',2)
,('toyota','c6',3)

查询

SELECT
    t1.Brand
    ,t1.Serial_No
    ,t2.Serial_No
FROM 
(SELECT
    ROW_NUMBER() OVER (ORDER BY Serial_No) Row_Num
    ,Brand
    ,Serial_No
FROM #Table1
) t1
LEFT JOIN #Table2 t2
    ON t1.Row_Num = t2.Rank_No

输出

Brand   Serial_No   Serial_No
toyota  x1          c4
toyota  x2          c5
toyota  x3          c6