縱表轉橫表查詢實現
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;
查詢結果