开发者

MySQL将查询结果用英文逗号,连接的实现方式

目录
  • 问题描述
  • 解决方案
  • 遇到的坑
    • 结果太长,显示不全
  • 总结

    问题描述

    -- 创建表
    CREATE TABLE `person` (
      `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
      `name` varchar(255) NOT NULL COMMENT '用户名',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
    
    -- 插入数据
    INSERT INTO `person` VALUES (1, '刘一');
    INSERT INTO `person` VALUESjs (2, '陈二');
    INSERT I编程客栈NTO `person` VALUES (3, '张三');
    INSERT INTO `person` VALUES (4, '李四');
    INSERT INTO `perpythonson` VALUES (5, '王五');
    

    MySQL将查询结果用英文逗号,连接的实现方式

    解决方案

    • GROUP_CONCAT(expr):返回连接的非 null 值字符串
    SELECT GROUP_CONCAT(你的字段) FROM 你的表
    • 如:
    SELECT GROUPpython_CONCAT(name) FROM person
    • 效果:

    MySQL将查询结果用英文逗号,连接的实现方式

    • 封装:
    SELECT GROUP_CONCAT(x) FROM 
    (SELECT x FROM x
    WHERE 
    GROUP BY x) AS a

    遇到的坑

    结果太长,显示不全

    php
    • group_concat_max_len 连接结果的最大长度默认为 1024 ,64 位系统最大为 18446744073709551615
    • 可以临时设置:
    # 默认为 1KB
    SET SESSION group_concat_max_len = 1024;
    # 1MB
    SET SESSION group_concat_max_len = 1048576;
    # 10MB
    SET SESSION group_concat_max_len = 10485760;
    # 1GB
    SET SESSION group_concat_max_len = 1073741824;

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新数据库

    数据库排行榜