mysql 实现行转列 及 合并字段显示
博客专区 > Lucky_Me 的博客 > 博客详情
mysql 实现行转列 及 合并字段显示
Lucky_Me 发表于7个月前
mysql 实现行转列 及 合并字段显示
  • 发表于 7个月前
  • 阅读 2
  • 收藏 0
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

摘要: mysql 实现 (1)行转列 (2)合并字段显示

    1. 建表语句

CREATE DATABASE mytest; -- 创建数据库
CREATE TABLE student (id INT PRIMARY KEY AUTO_INCREMENT ,sname VARCHAR(30),course VARCHAR(80),score INT); --  创建学生表
SHOW TABLES -- 查看数据库中有那些表

DESC student -- 查看student表结构

-- 插入学生成绩数据
INSERT INTO  student  VALUES(NULL,'张三','语文',88);
INSERT INTO student(sname,course,score) VALUES ('张三','数学',99);
INSERT INTO student(sname,course,score) VALUES ('张三','物理',100);

INSERT INTO  student  VALUES(NULL,'李四','语文',97);
INSERT INTO student(sname,course,score) VALUES ('李四','数学',56);
INSERT INTO student(sname,course,score) VALUES ('李四','物理',65);

INSERT INTO  student  VALUES(NULL,'小五','语文',98);
INSERT INTO student(sname,course,score) VALUES ('小五','数学',100);
INSERT INTO student(sname,course,score) VALUES ('小五','物理',100);

2.查询学生成绩
SELECT * FROM student -- 查询学生成绩

 

3. 行转列

3.1 效果

3.2 查询语句

-- 行转列
SELECT sname,
    MAX(CASE course WHEN '语文' THEN score  ELSE 0 END) 语文,
    MAX(CASE course WHEN '数学' THEN score  ELSE 0 END) 数学,
    MAX(CASE course WHEN '物理' THEN score  ELSE 0 END) 物理
    FROM student
    GROUP BY sname;

4. 合并字段显示

4.1 效果

4.2 语句

--  合并字段显示    
SELECT
    `sname`,
    GROUP_CONCAT(course, ":", score) AS 成绩
FROM
    student
GROUP BY
    `sname`

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 4
博文 93
码字总数 28115
×
Lucky_Me
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: