我在数据库中有一些数据:
名称|国家|状态
玛丽|美国|未决简|日本|未决
简|韩国|未决
阿德里安|中国|未决
彼得|新加坡|未决 杰克|马来西亚|未决阿德里安|中国|更新
简|日本|更新
我是否知道如何使用SELECT查询选择没有重复数据的所有数据? (如果存在重复数据,则仅选择“已更新状态”)
答案 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