如何将重复名称的 ID 移动到单独的列

How to move ID of duplicate names to a separate column

我有一个 MySQL table 有两个重名,如何将重名的 ID 分开到一个单独的列中?

   ---------------------------------
   | id   | name       | surname   |
   ---------------------------------     
   |  557 | Logan      | Smith     |
   | 1052 | Logan      | Smith     |
   ---------------------------------

例如,像这样:

   ----------------------------------------
   | id   |  id2  | name      | surname   |
   ----------------------------------------     
   | 557  |  1052 | Logan     | Smith     |
   ----------------------------------------

这是我当前的SQL语句,用于检索第一个table中的当前结果:

SELECT userid as id, name, surname
FROM user
WHERE name = "Logan"
GROUP BY userid

每个名字最多只能重复一个。

谢谢

如果您确定最大值始终为 2... 那么您可以:

SELECT min(userid) as id1, max(userid) as id2, name, surname
FROM user
WHERE name = "Logan"
GROUP BY name, surname

如果您想进一步完善查询

SELECT min(userid) as id1,
  case when min(userId) = max(userid) then null else max(userId) end as id2, name, surname
FROM user
WHERE name = "Logan"
GROUP BY name, surname

您可以使用类似的东西:

with cte as (
   select 
       row_number() over (partition by name, surname order by user_id)  rn, 
       name,
       surname,
       user_id
    from tt
)
select 
   name,
   surname,
  max(case when rn=1 then user_id end) as id_1, 
  max(case when rn=2 then user_id end) as id_2 
from cte 
group by name, surname