SQL:消除在一列中有一个重复值的行
我有一个表,在一列中可能包含重复的值。对于该列中的每个不同值,我只需要选择索引最小的行。我尝试了许多distinct()min()和group by的组合,但没有找到这个组合。此查询将在sql server 2008上运行SQL:消除在一列中有一个重复值的行,sql,sql-server-2008,Sql,Sql Server 2008,我有一个表,在一列中可能包含重复的值。对于该列中的每个不同值,我只需要选择索引最小的行。我尝试了许多distinct()min()和group by的组合,但没有找到这个组合。此查询将在sql server 2008上运行 color | index | user_id | organization_code blue 44 xxx yyy blue 66 xxx yyy red
color | index | user_id | organization_code
blue 44 xxx yyy
blue 66 xxx yyy
red 12 aaa bbb
white 55 ccc ddd
white 68 xxx yyy
查询将返回第一、第三和第四行
blue 44 xxx yyy
red 12 aaa bbb
white 55 ccc ddd
不要将
索引
等关键字用作列名。使用窗口功能解决您的问题,请参见下面的示例
select color, [index], [USER_ID], organization_code from (
select *, ROW_NUMBER() over (partition by color order by [index]) as ranker from table
) Z where ranker = 1
“一列”、“那列”。。。我猜你在这里指的是
color
,或者user\u id
或者organization\u code
——你是否愿意具体说明哪一列是“那一列”。很抱歉,混淆了,但你正确理解了我的意思。在我的示例中,“颜色”列包含感兴趣的副本。其他重复项是仓促键入的结果。关键字提示+1。将添加user\u id
也是一个不好的列名,因为它是函数名。@1\r或者如果您必须使用保留的关键字,请将其括在方括号中,如[index]