0

我在数据库中有一些数据:

姓名 | 国家 | 地位

玛丽 | 美国 | 待办的

简| 日本 | 待办的

简 | 韩国 | 待办的

阿德里安 | 中国 | 待办的

彼得 | 新加坡 | 待办的

杰克 | 马来西亚 | 待办的

阿德里安 | 中国 | 更新

简 | 日本 | 更新

我可以知道如何使用 SELECT 查询来选择所有没有重复数据的数据吗?(如果存在重复数据,只选择状态更新)

4

2 回答 2

1

尝试:

SELECT Name, Country, MAX(Status) as Status FROM (
SELECT TOP 100 PERCENT *
FROM NameCountry
ORDER BY Name ASC, Country ASC, Status DESC
) G
GROUP BY G.Name, G.Country
ORDER BY G.Name, G.Country

检查我的演示

于 2013-06-18T01:50:02.100 回答
0

从您的评论来看,您似乎只指前两列重复的数据。我认为最简单的方法是使用row_number(),它在大多数数据库中都可用:

select name, country, status
from (select t.*,
             row_number() over (partition by name, country
                                order by (case when status = 'Pending' then 0 else 1 end)
                               ) as seqnum
      from t
     ) t
where seqnum = 1
于 2013-06-18T01:41:45.270 回答