【问题标题】:Horizontal looper in one mysql table [duplicate]一个mysql表中的水平活套[重复]
【发布时间】:2018-09-28 10:26:47
【问题描述】:

我有一个mysql表:

每个用户有 4 封电子邮件:

 id user_Id email
 1  11      emailx@email.com
 2  11      emailc@email.com
 3  11      emaild@email.com
 4  11      emailv@email.com
 5  12      emailr@email.com
 6  12      emailb@email.com
 7  12      emailW@email.com
 8  12      emailT@email.com
 9  13      emailJ@email.com
 10 13      emailI@email.com
 11 13      emailL@email.com
 12 13      emailQ@email.com

如何对行结果进行水平排序?

这样:

 user_Id   email1           email2           email3             email4
 11        emailx@email.com emailc@email.com emaild@email.com   emailv@email.com
 12        emailr@email.com emailb@email.com emailW@email.com   emailT@email.com
 13        emailJ@email.com emailI@email.com emailL@email.com   emailQ@email.com

【问题讨论】:

  • 看看 mysql 中的数据透视表

标签: php mysql


【解决方案1】:

如果您的电子邮件限制为 4 个,那么您可以关注此

select t1.user_id,
    (select email from test where test.user_id = t1.user_id limit 0,1) as email1,
    (select email from test where test.user_id = t1.user_id limit 1,1) as email2,
    (select email from test where test.user_id = t1.user_id limit 2,1) as email3,
    (select email from test where test.user_id = t1.user_id limit 3,1) as email4
from test t1
group by t1.user_id;

【讨论】:

  • 完美,很高兴看到这个答案。 :)
  • @jeanpaul,如果此答案对您有用,请将此答案标记为解决方案。
【解决方案2】:
select user_Id , GROUP_CONCAT(email ORDER BY email) from tab
group by user_Id 

【讨论】:

  • 这样你只会得到一列包含所有电子邮件,而不是每个列
猜你喜欢
  • 2020-11-04
  • 2021-08-11
  • 2011-01-03
  • 2018-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-08
  • 2019-09-02
相关资源
最近更新 更多