我有一个看起来或多或少像这样的表:
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 | |
+------+---+------------+---------------------------------+--+
我该如何实现?
答案 0 :(得分:1)
为什么不使用GROUP_CONCAT
与DISTINCT
一起以所需的方式查询数据:
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_us
和last_login
列是否始终在功能上取决于user
。如果没有,那么您应该包括一些样本数据,以揭示此行为。
答案 1 :(得分:0)
to_html
此查询仅适用于包含两个值的role_for_groups