sql结果只显示一次相同的值

zdwk9cvp  于 2021-07-29  发布在  Java
关注(0)|答案(2)|浏览(591)

也许一个简单的问题我只是找不到答案。我有一个mysql的结果像

Col1 | Col2    
A    | 1    
A    | 2   
B    | 1

我希望它输出以下内容:

Col1 | Col2
A    | 1
     | 2
B    | 1

我该怎么做?当使用group by时,他仍然在第一列显示所有的“a”,我只想在第一次出现时显示一次。
提前谢谢!

lsmepo6l

lsmepo6l1#

使用 CASE 带的表达式 NOT EXISTS :

select
  case when not exists (select 1 from tablename where col1 = t.col1 and col2 < t.col2) then t.col1 end col1,
  t.col2
from tablename t
order by t.col1, t.col2

请看演示。
结果:

| col1 | col2 |
| ---- | ---- |
| A    | 1    |
|      | 2    |
| B    | 1    |
sr4lhrrt

sr4lhrrt2#

您应该在应用程序中而不是在数据库中进行这种格式设置。为什么?您的结果实际上不是一个有效的表,因为第二行的定义依赖于第一行。在sql表中,每一行都应该独立存在。
但是,你可以这样做,如果你小心的话:

select (case when seqnum = 1 then col1 end) as col1, col2
from (select t.*,
             row_number() over (partition by col1 order by col2) as seqnum
      from t
     ) t
order by col1, seqnum;

要使这一点始终如一地发挥作用,重要的是 order by 符合的定义 seqnum .

相关问题