gpt4 book ai didi

mysql - 在另一列上排列一列

转载 作者:可可西里 更新时间:2023-11-01 06:37:35 26 4
gpt4 key购买 nike

我有一个表格:

userid  rank  name
-------------------
1 4 raj
1 90 frank
1 100 neeta
1 123 liz
2 2 liz
2 20 neeta
2 23 frank
2 222 raj

我需要把它转换成

userid  min_rank  next_min_rank
-------------------------------
1 raj frank
2 liz neeta

我已经在网上搜索了很长时间,但找不到解决方案。

你能帮忙吗?

最佳答案

此查询将为每个用户选择最低排名和下一个排名:

select s.userid, s.min_rank, min(users.rank) as next_rank
from (
select userid, min(rank) as min_rank
from users
group by userid) s left join users
on users.userid = s.userid and s.min_rank<users.rank
group by s.userid

ant 这将显示名称:

select t.userid, t1.name, t2.name
from (
select s.userid, s.min_rank, min(users.rank) as next_rank
from (
select userid, min(rank) as min_rank
from users
group by userid) s left join users
on users.userid = s.userid and s.min_rank<users.rank
group by s.userid ) t
left join users t1 on t.userid=t1.userid and t.min_rank=t1.rank
left join users t2 on t.userid=t2.userid and t.next_rank=t2.rank

结果是:

1  raj  frank
2 liz neeta

如果可能有多个用户具有相同的排名,这取决于你想如何处理这种情况,你可以只添加:

group by t.userid

只显示其中一个。也许您还可以在选择上使用 GROUP_CONCAT(t1.name), GROUP_CONACT(t2.name)

关于mysql - 在另一列上排列一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13974281/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com