mysql 中的行列转换
1.假设有一张表示cj表
Name Subject Result
张三 语文 80
张三 数学 90
张三 物理 85
李四 语文 85
李四 数学 92
李四 物理 82
要求查询结果:
姓名 语文 数学 物理
张三 80 90 85
李四 85 92 82
--创建cj表SQL CREATE TABLE `student` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(20) DEFAULT NULL, `subject` VARCHAR(20) DEFAULT NULL, `result` INT(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=INNODB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8; --插入数据SQL INSERT INTO student (`id`, `name`, `subject`, `result`) VALUES (1, '张三', '语文', 80); INSERT INTO student (`id`, `name`, `subject`, `result`) VALUES (2, '张三', '数学', 90); INSERT INTO student (`id`, `name`, `subject`, `result`) VALUES (3, '张三', '物理', 85); INSERT INTO student (`id`, `name`, `subject`, `result`) VALUES (4, '李四', '语文', 85); INSERT INTO student (`id`, `name`, `subject`, `result`) VALUES (5, '李四', '数学', 92); INSERT INTO student (`id`, `name`, `subject`, `result`) VALUES (6, '李四', '物理', 89); --查询SQL SELECT DISTINCT a.name 姓名, (SELECT result FROM student WHERE NAME = a.name AND SUBJECT = '语文') 语文, (SELECT result FROM student WHERE NAME = a.name AND SUBJECT = '数学') 数学, (SELECT result FROM student WHERE NAME = a.name AND SUBJECT = '物理') 物理 FROM student a;