获取列x的非重复但是列y的重复

时间:2012-06-26 19:44:57

标签: sql join unique record

我有一张桌子(称之为表myTable)。

它有这样的数据:

号码/名称

1    jake
2    chris
3    sally
4    billy
1    tom
5    cathy

(我意识到这是一个糟糕的设置,但我没有得到设置的奢侈)



我需要查询此表,以便返回结果:

1    jake
2    chris
3    sally
4    billy
5    cathy

OR

2    chris
3    sally
4    billy
1    tom
5    cathy


为重复的号码返回哪个名称无关紧要...只返回一个。

这是我的不工作尝试:

with
a as (
      SELECT number
      FROM myTable
),

b as (
      SELECT number, name
      FROM myTable
)


SELECT a."number", b."name"

FROM a
left join b on a."number" = b."number"

2 个答案:

答案 0 :(得分:2)

使用GROUP BY确保每个number仅返回一次,并使用聚合函数为name选择一个值:

SELECT number, MAX(name) AS name
FROM yourtable
GROUP BY number

答案 1 :(得分:0)

试试这个。由于您不关心返回属于某个数字的多个名称,您可以使用max或min函数。

select number, max(name)
from myTable
group by number