SQL并排获得两列一个多值一个唯一值

问题描述 投票:0回答:1

我的问题很少,我尝试查找但未找到所需的答案,

我的数据库中有两列,一个是a和b,请考虑“ A”具有ID,而“ B”具有颜色,现在我实现了一半,是当我尝试查找B列时ID重复例如

1 Black
1 Black
2 Blue
2 Blue
2 Blue
3 White

现在我想要的就是获取这些列,并在同一个查询中添加另外两个列,然后显示列“ A”及其颜色的反义;例如]

A B       C
1 Black   1 Black
1 Black   2 Blue
2 Blue    3 White
2 Blue
2 Blue
3 White

有可能吗?

sql sqlyog
1个回答
0
投票

这是一件很奇怪的事情,但是您可以使用窗口功能:

select t.a, t.b, tg.a as c, tg.b as d
from (select a, b, row_number() over (order by a, b) as seqnum
      from t
     ) t left join
     (select a, b, row_number() over (order by a, b) as seqnum
      from t
      group by a, b
     ) tg
     on t.seqnum = tg.seqnum;

Windows函数从MySQL 8.0开始可用

© www.soinside.com 2019 - 2024. All rights reserved.