从表中获取某些属性唯一的记录

时间:2013-08-26 18:37:15

标签: sql unique distinct rownum

我有一个表人(身份证,姓名,城市)。

我想要返回每个城市中只有一个人的记录(城市应该是唯一的)。

例如,如果有10条记录,其中3条有城市='孟买'其他3条记录有城市='纽约'其余4人有城市='芝加哥',然后我想返回3条记录(每个城市一条记录)。

我尝试过各种各样的事情,包括DISTINCT,ROWNUM,但没有得到理想的结果。

任何人都可以告诉我如何实现这一目标?

4 个答案:

答案 0 :(得分:0)

试试这个: -

  select city,id, name
  from Person
  group by city
  order by city

答案 1 :(得分:0)

如果您的意思是想要归还那些只列出一个人的城市......

Select Max(ID), max(name), City, count(city)
From Person
Group by City
Having count(City) = 1

如果您的意思是想要返回不同的城市列表......

SELECT city
FROM Person
GROUP BY city

如果你的意思是想要归还一个城市的所有人,但只列出一次城市...... 你想看到什么结果?如果你需要人名/ Id这是不可能的,因为你的记录在2个不同的城市有3个用户,在上一个城市有4个用户。所以你想在结果中看到什么“人”...所以在孟买有A,B,C ......你期望在那个城市看到什么结果?

答案 2 :(得分:0)

这可能是你想要的吗?一个记录,计算每个城市的名称数量?

select city,count(*) as COUNT
from Person
group by city
order by city

答案 3 :(得分:0)

你想要每个城市一排,无论哪一排?

select city,id, name
from
  (select city, id, name,
      row_number() over (partition by city order by id) as rn 
   from Person
  ) dt
where rn = 1

这将返回每个城市ID最低的行。