示例表:
table 上电影:
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、标题和年份,其中标题和年份不重复。注意如果重复,标题和年份将始终相同,因此例如《 bat 侠 2014》就不是一个选择。如果是重复的,标题和年份都将与重复记录相同。基本上不需要选择具有唯一键的重复记录。最有效的方法是什么?
编辑:另一件事。请注意,可能存在空值,我不希望省略这些值。我更新了示例来展示这一点。
最佳答案
使用 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
关于sql - 不选择具有唯一键的重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41573016/