选择没有重复数据的所有数据

时间:2013-06-18 01:37:50

标签: sql

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

  

名称|国家|状态

     玛丽|美国|未决

     

简|日本|未决

     

简|韩国|未决

     

阿德里安|中国|未决

     彼得|新加坡|未决

     杰克|马来西亚|未决

     

阿德里安|中国|更新

     

简|日本|更新

我是否知道如何使用SELECT查询选择没有重复数据的所有数据? (如果存在重复数据,则仅选择“已更新状态”)

2 个答案:

答案 0 :(得分: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

检查我的Demo

答案 1 :(得分: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