小伙伴想精准查找自己想看的MySQL文章?喏 → MySQL专栏目录 | 点击这里
MySQL
行转列
,对经常处理数据的同学们来说,一定是不陌生的,甚至是印象深刻,因为它大概率困扰过你,让你为之一愣~ 但当你看到本文后,这个问题就不在是问题,及时收藏,以后谁再问你这个问题,直接甩他脸上,粘贴即用。
这里告诉大家一个小秘密,其实我和《小欢喜》
里面的几位是同学还是好朋友~~今天我就拿我们哥儿几个高考成绩表来当测试表。嗯,兄弟们不信?我还有我们在学校里的合影呢,高三那年还没有PS,所以照片肯定是真的!
???
废话不多说,首先,我们看一下咱们的测试表数据
和预期查询的结果
。
mysql> SELECT * FROM t_gaokao_score;
+----+--------------+--------------+-------+
| id | student_name | subject | score |
+----+--------------+--------------+-------+
| 1 | 林磊儿 | 语文 | 148 |
| 2 | 林磊儿 | 数学 | 150 |
| 3 | 林磊儿 | 英语 | 147 |
| 4 | 乔英子 | 语文 | 121 |
| 5 | 乔英子 | 数学 | 106 |
| 6 | 乔英子 | 英语 | 146 |
| 7 | 方一凡 | 语文 | 70 |
| 8 | 方一凡 | 数学 | 90 |
| 9 | 方一凡 | 英语 | 59 |
| 10 | 方一凡 | 特长加分 | 200 |
| 11 | 陈哈哈 | 语文 | 109 |
| 12 | 陈哈哈 | 数学 | 92 |
| 13 | 陈哈哈 | 英语 | 80 |
+----+--------------+--------------+-------+
13 rows in set (0.00 sec)
看看我们行转列
转完后的结果:
+--------------+--------+--------+--------+--------------+
| student_name | 语文 | 数学 | 英语 | 特长加分 |
+--------------+--------+--------+--------+--------------+
| 林磊儿 | 148 | 150 | 147 | 0 |
| 乔英子 | 121 | 106 | 146 | 0 |
| 方一凡 | 70 | 90 | 59 | 200 |
| 陈哈哈 | 109 | 92 | 80 | 0 |
+--------------+--------+--------+--------+--------------+
4 rows in set (0.00 sec)
好,下面我们一起来看看SQL是如何编写的,对了,创建表结构和导入测试数据的SQL放到