我在数据库中有一些数据:
姓名 | 国家 | 地位
玛丽 | 美国 | 待办的
简| 日本 | 待办的
简 | 韩国 | 待办的
阿德里安 | 中国 | 待办的
彼得 | 新加坡 | 待办的
杰克 | 马来西亚 | 待办的
阿德里安 | 中国 | 更新
简 | 日本 | 更新
我可以知道如何使用 SELECT 查询来选择所有没有重复数据的数据吗?(如果存在重复数据,只选择状态更新)
我在数据库中有一些数据:
姓名 | 国家 | 地位
玛丽 | 美国 | 待办的
简| 日本 | 待办的
简 | 韩国 | 待办的
阿德里安 | 中国 | 待办的
彼得 | 新加坡 | 待办的
杰克 | 马来西亚 | 待办的
阿德里安 | 中国 | 更新
简 | 日本 | 更新
我可以知道如何使用 SELECT 查询来选择所有没有重复数据的数据吗?(如果存在重复数据,只选择状态更新)
尝试:
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
检查我的演示
从您的评论来看,您似乎只指前两列重复的数据。我认为最简单的方法是使用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