mysql GROUP

06-26 1258阅读

文章目录

  • GROUP_CONCAT 分组连接
  • GROUP_CANCAT 的使用
    • 分班级列出名单
    • 分班级列出名单并包含显示性别
    • 组合IFNULL
    • 组合IF
    • 组合case when

      GROUP_CONCAT 分组连接

      准备的数据示例

      mysql GROUP

      CREATE TABLE `students` (
        `id` int(11) NOT NULL AUTO_INCREMENT,
        `name` varchar(20) DEFAULT NULL,
        `className` varchar(100) DEFAULT NULL,
        `age` int(11) DEFAULT NULL,
        `sex` int(11) DEFAULT NULL COMMENT '性别 1 男 2女',
        PRIMARY KEY (`id`)
      ) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb4;
      
      INSERT INTO db1.students
      (id, name, className, age, sex)
      VALUES(1, '王晓宇', '六(1)班', 12, 2);
      INSERT INTO db1.students
      (id, name, className, age, sex)
      VALUES(2, '杜明月', '六(1)班', 11, 2);
      INSERT INTO db1.students
      (id, name, className, age, sex)
      VALUES(8, '李慕然', '六(1)班', 11, 1);
      INSERT INTO db1.students
      (id, name, className, age, sex)
      VALUES(9, '马曦铭', '六(1)班', 11, 1);
      INSERT INTO db1.students
      (id, name, className, age, sex)
      VALUES(10, '王秋白', '六(2)班', 11, 1);
      INSERT INTO db1.students
      (id, name, className, age, sex)
      VALUES(11, '刘胜明', '六(3)班', 11, NULL);
      

      GROUP_CANCAT 的使用

      分班级列出名单

      select className ,GROUP_CONCAT(name)  from students s  group by s.className 
      

      mysql GROUP

      分班级列出名单并包含显示性别

      由于存在用于没有填写性别,所以这里不能直接CONCAT,否则就像下面的情况,存在空值的行连接被丢弃

      select className ,GROUP_CONCAT(name,'(',sex,')')  from students s  group by s.className
      

      mysql GROUP

      组合IFNULL

      我们可以使用IFNULL将其转换

      select className ,GROUP_CONCAT(name,'(',IFNULL(sex,0),')')  from students s  group by s.className
      

      mysql GROUP

      组合IF

      将其转换为中文性别

      select className ,GROUP_CONCAT(name,'(',IF(sex=1,'男',IF(sex=2,'女','未填写')),')')  from students s  group by s.className
      

      mysql GROUP

      组合case when

      select className ,GROUP_CONCAT(name,'(',CASE WHEN sex is null THEN '未填写' WHEN sex=1 THEN '男' WHEN sex =2 THEN '女' END  ,')') 
      from students s  group by s.className
      

      mysql GROUP

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]