Php 将多个列合并为一个数组或可分解字符串
我提出的声明:Php 将多个列合并为一个数组或可分解字符串,php,mysql,Php,Mysql,我提出的声明: SELECT p.user_id AS started_by, p.position, p.created AS started_time, GROUP_CONCAT( c.id, c.user_id, c.comment, c.created) AS comments FROM pointers AS p
SELECT p.user_id AS started_by,
p.position,
p.created AS started_time,
GROUP_CONCAT(
c.id,
c.user_id,
c.comment,
c.created) AS comments
FROM pointers AS p
JOIN comments AS c
ON p.id = c.pointer_id
WHERE p.archive_id = 3
GROUP BY p.id
这让我明白:
发生的情况是,GROUP_CONCAT()只是将c.id连接起来。c、 用户id c.comment和c.created。我甚至不能以任何有意义的方式来分解这个值。(注意日期和id是如何作为一个字符串组合在一起的)
我不想为注释创建单独的查询。还是我应该
在任何情况下,我都需要orderby c创建注释,并有两个分隔符。例如:
comments => 1,1,text this is!,2014-12-20 17:52:02;3,1,asasd,2014-12-20 20:46:40
为列的连接定义一个分隔符,为组本身定义另一个分隔符如何
GROUP_CONCAT(concat_ws(',',
c.id,
c.user_id,
c.comment,
c.created)
separator ';') AS comments
您可能希望以不同的方式处理此问题-
GROUP_CONCAT
允许您使用分隔符
,但我们无法确保分隔符保持唯一(即在任何字段值中都找不到)。此外,GROUP\u CONCAT
的最大长度为1024个字符。使用单独的注释查询可能是一个好主意。@Terry谢谢,现在就这样做:)您可以使用SET group\u concat\u max\u len=4096增加1024字节的限制代码>在执行之前query@Matteo是的,我知道,但4096就足够了?你永远不知道。