Select 个字段的不同行

Select distinct lines by a field

我正在做一个 select returns 我 table 喜欢这个

Name      surname
Jhon          a
Jhon          b
Jhon          c
Joe           a
Joe           b
Joe           c

但我需要得到的只是 Jhon 的一次出现和 Joe 的一次出现,其中一个姓氏。

我只能有一个Jhon一个姓氏和一个Joe一个姓氏..

我无法创建 order by,因为我需要 select 名字和姓氏。此外,如果我使用 distinct,我将拥有所有 Jhons 和 Joes。

你能帮帮我吗?

您可以只使用聚合:

select name, max(surname) as surname
from table t
group by name;

你也可以用解析函数做类似的事情:

select t.name, t.surname
from (select t.*, row_number() over (partition by name order by name) as seqnum
      from table t
     ) t
where seqnum = 1;

如果您想从同一行中获取多个列,这将特别有用。