name varchar
record varchar
name: chan record: 1
name: chan record: 33
name: chan record: 1
name: phoebe record 4
name: phoebe record 55
SELECT *, GROUP_CONCAT('record') FROM `table` GROUP BY `name`
我可以获得下面的数据,这正是我想要的,但是GROUP_CONCAT
有长度限制,我的服务器供应商不允许我更改配置,是否可以在不使用{{1}的情况下获得相同的结果}}
GROUP_CONCAT
答案 0 :(得分:0)
默认限制为1024.尝试通过连接多个group_concat结果来克服此限制。
之类的东西SELECT *,
SUBSTRING(
CONCAT(
GROUP_CONCAT(
IF(record BETWEEN 1 AND 100, CONCAT(',', record), '')
SEPARATOR ''
),
GROUP_CONCAT(
IF(record BETWEEN 101 AND 200, CONCAT(',', record), '')
SEPARATOR ''
)
),
2
) AS result
FROM `table`
参考:http://code.openark.org/blog/mysql/sql-trick-overcoming-group_concat-limitation-in-special-cases