样本表:
表电影:
Title | Year | Price | Genre | ID
Batman 2016 12 Comic 1
Avengers 2014 7 Comic 2
Batman 2016 7 Comic 3
Fast 5 2012 7 Car 4
Superman 5
Star Wars 6
期望的结果:
Title | Year | ID
Batman 2016 1
Avengers 2014 2
Fast 5 2012 4
Superman 5
Star Wars 6
所以我需要选择不同的ID,标题和年份,其中标题和年份不重复。注意如果标题和年份重复,则标题和年份将始终相同,例如,Batman 2014将不是一个选择。如果是重复,则标题和年份将与重复记录相同。基本上不需要选择具有唯一键的重复记录。最有效的方法是什么?
编辑:另一件事。请注意,可能存在空值,我不希望省略这些值。我更新了示例以显示此内容。
答案 0 :(得分:2)
使用row_number,按不同字段分区,然后按另一个
排序with CTE as
(
select a1.*, row_number() over (partition by Title, Year order by ID) as r_ord
from Movies a1
)
select CTE.*
from CTE
where r_ord =1
或者,如果您只想要标题,年份和ID:
select Title, Year, min(ID)
from movies
group by Title, Year