【问题标题】:How to concatenate records based on a GROUP BY? [duplicate]如何根据 GROUP BY 连接记录? [复制]
【发布时间】:2014-11-18 00:01:31
【问题描述】:

我有一个结构如下的表:

| id | textfield | text_group | 
| 1  | yes       | 123        | 
| 2  | y         | 123        | 
| 3  | no        | abc        | 
| 4  | n         | abc        | 

我想返回所有记录,但这样我得到:

| colA  | text_group | 
| yes y | 123        |
| no n  | abc        |

这是否可以简单地通过查询来实现,还是我需要使用一些编程来格式化它?我本来会做一个分组,但后来我在结果 ColA 中丢失了信息

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    group_concat 聚合函数应该可以解决问题:

    SELECT   group_concat (textfield SEPARATOR ' ') AS colA, text_group
    FROM     my_table
    GROUP BY text_group
    

    【讨论】:

      【解决方案2】:

      使用GROUP_CONCAT

      SELECT text_group
           , GROUP_CONCAT(textfield SEPARATOR ' ') AS colA
      FROM table
      GROUP BY text_group
      

      【讨论】:

      • 适当的GROUP BY text_group
      • 如果组 concat 会非常大,不要忘记 SET group_concat_max_len=100000000
      猜你喜欢
      • 2013-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多