【问题标题】:How To Use MySQL Group Concat [duplicate]如何使用 MySQL Group Concat [重复]
【发布时间】:2019-07-01 23:49:23
【问题描述】:

我有以下表格

| id | a | b | c |
-------------------
| 1  | x | y | r |
| 2  | x | y | q |
| 3  | x | y | f |

结果应该是

| a | b | c |
-------------
| x | y | r,q,f |

试过

select a, b, group_concat(c) from table;

但它说:

错误代码:1140。在没有 GROUP BY 的聚合查询中,SELECT 列表的表达式 #1 包含非聚合列“table.table”;这与 sql_mode=only_full_group_by 不兼容

希望你能帮助我,谢谢!

【问题讨论】:

  • 错误说明了一切“错误代码:1140。在聚合查询中没有 GROUP BY”错误是正确的,您不能将非聚合列与聚合(GROUP_CONCAT ) 列它不是 ANSI SQL.. 但请注意错误说 without GROUP BY,尝试添加 GROUP BY a, b 很确定这会给你正确的结果。
  • @AbdullahAlShakib 不禁用 sql_mode 是个坏主意..
  • 我认为,这是查询的一个问题,而不是重复...如果:select a, b, group_concat(c) from table GROUP BY a, b;,查询看起来会更好

标签: mysql sql group-by group-concat


【解决方案1】:

试试这样的

Select GROUP_CONCAT(DISTINCT c SEPARATOR ',') from table
Group By a,b

【讨论】:

    【解决方案2】:

    GROUP_CONCAT() 是一个聚合函数,这意味着它需要您对结果进行分组。

    此查询返回您的预期结果:

    SELECT a, b, GROUP_CONCAT(c ORDER BY id) c
    FROM mytable
    GROUP BY a, b
    

    注意事项:

    • ,GROUP_CONCAT 的默认分隔符
    • GROUP_CONCAT支持ORDER BY

    Demo on DB Fiddle

    一个 |乙 | C :- | :- | :---- x |是 | r,q,f

    【讨论】:

      【解决方案3】:

      试试:

      选择 a, b, GROUP_CONCAT(c) c 从表 按 a,b 分组

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-09-12
        • 1970-01-01
        • 2016-03-06
        • 1970-01-01
        • 2019-02-11
        • 2010-11-12
        相关资源
        最近更新 更多