SQL在具有多个相同值的表上加入

时间:2016-01-05 12:18:32

标签: sql sql-server performance

我继承了一个数据库,其中一些表包含多个相同的值。

表A
aId(PK),RowId,Value,CreateDate

表格行 RowId(PK)

表A(20M条目)包含许多相同的RowId和Value条目(尽管CreateDate会有所不同),每个RowId通常有20个相同的条目。我想做这个查询:

select Row.RowId, DistinctA.Value  
from Row  
left join (select distinct RowId, Value from A) DistinctA  
on DistinctA.RowId=Row.RowId  

最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

这是你想要的吗?

select a.*
from (select a.*,
             row_number() over (partition by rowid, value order by createdate desc) as seqnum
      from a
     ) a
where seqnum = 1;

这将返回每个组合的最新行(对于最旧的行使用order by createdate asc)。