Row_Number() 与联合查询

问题描述:

我有一个 sql 查询,它从两个具有相同列名的表中返回行.我需要一个完整结果集中所有记录的行号.

I have an sql query that returns rows from two tables with same column names. I need a row number of all records in a complete result set.

以下是查询

select Id, VersionNumber from documents where id=5 
Union all  
select Id, VersionNumber from versions where id=5
order by VersionNumber desc

应该怎么做?

如果我只需要返回一个 row_num,其中 VersionNumber 是 5,该怎么办.

And what if I only need to return a row_num where VersionNumber is lets say 5.

试试这个:

SELECT *, ROW_NUMBER() OVER(ORDER BY Id) ROW_NUM
  FROM (
        select Id, VersionNumber from documents where id=5 
        Union all  
        select Id, VersionNumber from versions where id=5
       ) a
order by VersionNumber desc

按版本号 5 过滤使用:

TO filter by version number 5 use:

SELECT * 
FROM   (SELECT *, 
               Row_number() OVER(ORDER BY versionnumber DESC, id) row_num 
        FROM   (SELECT id, 
                       versionnumber 
                FROM   documents 
                WHERE  id = 5 
                UNION ALL 
                SELECT id, 
                       versionnumber 
                FROM   versions 
                WHERE  id = 5) a) b 
WHERE  version = 5