将多行合并到MySQL

时间:2018-07-04 10:37:16

标签: mysql

我有一个看起来或多或少像这样的表:

user  is_su  last_login  roles_for_groups
+------+---+------------+----------------------------+
| rob  | 1 | 2018-02-09 | admin, read                |
+------+---+------------+----------------------------+
| gian | 0 | 2018-06-21 | prod_full_access, readOnly | 
+------+---+------------+----------------------------+
| gian | 0 | 2018-06-21 | prod_full_access, CCT      |  
+------+---+------------+----------------------------+
| rob  | 1 | 2018-02-09 | admin, write               |  
+------+---+------------+----------------------------+

并且我想将同一用户的所有行合并为一行,使得表格看起来像这样:

+------+---+------------+---------------------------------+--+
| rob  | 1 | 2018-02-09 | admin, read, write              |  |
+------+---+------------+---------------------------------+--+
| gian | 0 | 2018-06-21 | prod_full_access, readOnly, CCT |  |
+------+---+------------+---------------------------------+--+

我该如何实现?

2 个答案:

答案 0 :(得分:1)

为什么不使用GROUP_CONCATDISTINCT一起以所需的方式查询数据:

SELECT
    user,
    is_us,
    last_login,
    GROUP_CONCAT(DISTINCT roles_for_groups) roles_for_groups
FROM yourTable
GROUP BY
    user,
    is_us,
    last_login;

目前尚不清楚is_uslast_login列是否始终在功能上取决于user。如果没有,那么您应该包括一些样本数据,以揭示此行为。

答案 1 :(得分:0)

to_html

此查询仅适用于包含两个值的role_for_groups

相关问题