mysql把结果变横表_MySQL 纵表转横表查询实现

纵表转横表查询实现

By:授客 QQ:1033553122 欢迎加入全国软件测试交流群:7156436

实践环境

MySQL 5.7

创建测试表

CREATE TABLE tb_test (

id INT AUTO_INCREMENT PRIMARY KEY,

attr VARCHAR (20),

attr_value VARCHAR (20)

) ;

插入测试数据

INSERT INTO tb_test(attr, attr_value) VALUES('age', 18), ('sex', '男'), ('name', '授客'),('hobby', 'unknow');

查询显示:

查询需求

纵表转横表:假设attr列的值不重复,且数量有限,要求每行记录的attr值显示为查询结果中的一列(暂且称之为“属性列”),对应行记录的atrr_value值为该属性列的值

查询实现

SELECT tb_test.id,

MAX(IF(tb_test.attr = 'age', tb_test.attr_value, NULL)) AS age,

MAX(IF(tb_test.attr = 'sex', tb_test.attr_value, NULL)) AS sex,

MAX(IF(tb_test.attr = 'name', tb_test.attr_value, NULL)) AS `name`,

MAX(IF(tb_test.attr = 'hobby', tb_test.attr_value, NULL)) AS hobby

FROM tb_test;

查询结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值