登录 |  注册 |  繁體中文


mysql 列转行 合并字段

分类: 数据库 颜色:橙色 默认  字号: 阅读(392) | 评论(0)

1 数据表: 

列转行:利用max(case when then)

max---聚合函数 取最大值
(case course when 语文 then score else 0 end) ---判断
 as 语文---别名作为列名
      SELECT
    `name`,
    MAX(
        CASE 
        WHEN  course=语文 THEN
            score
        END
    ) AS 语文,
    MAX(
        CASE 
        WHEN course=数学 THEN
            score
        END
    ) AS 数学, 
    MAX(
        CASE 
        WHEN course=英语 THEN
            score
        END
    ) AS 英语
FROM
    student
GROUP BY `name`
;
       

2 合并字段显示:利用group_cancat(course,”:”,”score”)

SELECT
    `name`,
    GROUP_CONCAT(course, ":", score) AS 成绩
FROM
    student
GROUP BY
    `name`;

group_concat()会计算哪些行属于同一组,将属于同一组的列显示出来。

1.测试语句:
SELECT
    GROUP_CONCAT(`name`)
FROM
    student
GROUP BY
    `name`;
查找结果如下,以逗号分割进行列出,如下:

2.测试:

SELECT
    GROUP_CONCAT(`name`)
FROM
    student
;
结果:

group_concat()函数需要与group by语句在一起使用,才能得到需要的效果。




姓 名: *
邮 箱:
内 容: *
验证码: 点击刷新 *   

回到顶部