考虑一个包含三个行的名称的数据库表:
Peter
Paul
Mary
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法可以将其转换为单个字符串Peter, Paul, Mary?
使用MySQL,我可以这样做:
SELECT hobbies FROM peoples_hobbies WHERE person_id = 5;
Run Code Online (Sandbox Code Playgroud)
我的输出:
shopping
fishing
coding
Run Code Online (Sandbox Code Playgroud)
但相反,我只想要1行,1 col:
预期产出:
shopping, fishing, coding
Run Code Online (Sandbox Code Playgroud)
原因是我从多个表中选择了多个值,并且在所有连接之后我有了比我想要的更多的行.
我在MySQL Doc上寻找了一个函数,它看起来不像CONCAT或CONCAT_WS函数接受结果集,所以这里的任何人都知道如何做到这一点吗?
我GROUP_CONCAT()在MySQL查询中使用将多行转换为单个字符串.但是,此函数的结果的最大长度是1024字符.
我非常清楚我可以改变参数group_concat_max_len来增加这个限制:
SET SESSION group_concat_max_len = 1000000;
Run Code Online (Sandbox Code Playgroud)
但是,在我正在使用的服务器上,我无法更改任何参数.不是通过使用前面的查询而是通过编辑任何配置文件.
所以我的问题是:有没有其他方法可以将多行查询的输出转换为单个字符串?
我有一个表,我想每个id拉一行,并且字段值连接在一起.
例如,在我的表中,我有这个:
TM67 | 4 | 32556
TM67 | 9 | 98200
TM67 | 72 | 22300
TM99 | 2 | 23009
TM99 | 3 | 11200
Run Code Online (Sandbox Code Playgroud)
我想输出:
TM67 | 4,9,72 | 32556,98200,22300
TM99 | 2,3 | 23009,11200
Run Code Online (Sandbox Code Playgroud)
在MySQL中,我能够使用聚合函数GROUP_CONCAT,但这似乎在这里不起作用...是否有等效的PostgreSQL,或其他方法来实现这一点?
简而言之:有没有办法对GROUP_CONCAT语句中的值进行排序?
查询:
GROUP_CONCAT((SELECT GROUP_CONCAT(parent.name SEPARATOR " » ")
FROM test_competence AS node, test_competence AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt
AND node.id = l.competence
AND parent.id != 1
ORDER BY parent.lft) SEPARATOR "<br />\n") AS competences
Run Code Online (Sandbox Code Playgroud)
我得到这一行:
工艺品»细木工
管理»组织
我希望这样:
管理»组织
工艺品»细木工
我在做SELECT GROUP_CONCAT(categories SEPARATOR ' ') FROM table.以下示例数据:
categories
----------
test1 test2 test3
test4
test1 test3
test1 test3
Run Code Online (Sandbox Code Playgroud)
但是,我test1 test2 test3 test4 test1 test3回来了,我想test1 test2 test3 test4回来.有任何想法吗?
非常感谢!
我有一个查询,我正在使用GROUP_CONCAT和自定义分隔符,因为我的结果可能包含逗号:'----'
这一切都运行良好,但它仍然以逗号分隔,所以我的输出是:
Result A----,Result B----,Result C----
Run Code Online (Sandbox Code Playgroud)
我怎样才能使输出为:
Result A----Result B----Result C----
Run Code Online (Sandbox Code Playgroud)
我认为这是自定义分隔符的想法!
如果失败了,你可以在结果中逃避逗号,所以我可以用GROUP_CONCAT逗号在PHP中爆炸吗?
我有一张桌子:
+-----------+-------+------------+
| client_id | views | percentage |
+-----------+-------+------------+
| 1 | 6 | 20 |
| 1 | 4 | 55 |
| 1 | 9 | 56 |
| 1 | 2 | 67 |
| 1 | 7 | 80 |
| 1 | 5 | 66 |
| 1 | 3 | 33 |
| 1 | 8 | 34 |
| 1 | 1 | 52 |
Run Code Online (Sandbox Code Playgroud)
我试过了group_concat:
SELECT li.client_id, …Run Code Online (Sandbox Code Playgroud) 如果我在MySQL中有一个包含以下数据的表:
id Name Value
1 A 4
1 A 5
1 B 8
2 C 9
Run Code Online (Sandbox Code Playgroud)
如何将其变为以下格式?
id Column
1 A:4,5,B:8
2 C:9
Run Code Online (Sandbox Code Playgroud)
我想我必须使用GROUP_CONCAT.但我不确定它是如何工作的.
我有一个查询,它在整数字段上使用mysql的GROUP_CONCAT.
我正在使用PHPMYADMIN来开发此查询.我的问题是,不是显示1,2是连接字段的结果,而是[BLOB - 3B].
查询是
SELECT rec_id,GROUP_CONCAT(user_id)
FROM t1
GROUP BY rec_id
Run Code Online (Sandbox Code Playgroud)
(两个字段都是unsigned int,两者都不是唯一的)
我应该添加什么来查看实际结果?
group-concat ×10
mysql ×8
sql ×3
concat ×2
sql-order-by ×2
casting ×1
csv ×1
group-by ×1
phpmyadmin ×1
postgresql ×1
separator ×1
sorting ×1
sql-server ×1