mysql需求场景——列转行

  

由于是模拟场景,直入主题,表名称及结构定义很低,请忽视!

  

(1)现有学生分数表如下:
mysql>select * from vmark1;
+ - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - + +
| | sid sname马克| | |课程
+ - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - +
| 1 |张三| jsj | 90 |
| 1 |张三|宇文| 65 |
| 1 |张三| yingyu | 80 |
| 2 |李四| jsj | 80 |
| 2 |李四|宇文| 98 |
| 2 |李四| yingyu | 90 |
+ + - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - +
6行组(0.00秒)

  

(2)需求是以更直观的方式,查看学生的成绩。细化也就是把马克这列的值,以行的形式展示。通过案例。当语句查询:
mysql>选择sid, sname,这样当课程=癹sj”那么马克jsj结束,这样当课程=坝钗摹蹦敲绰砜擞钗?这样当课程=皔ingyu”那么马克结束yingyu vmark1;
+ + - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - +
| | sid sname | jsj |宇文| yingyu |
+ + - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - +
| 1 |张三| 90 |空零| |
| 1 |张三零零| | 65 | |
| 1 |张三零零| | 80 | |
| 2 |李四零零| | 80 | |
| 2 |李四零零| | 98 | |
| 2 |李四零零| | 90 | |
+ + - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - +
6行组(0.01秒)

  

我靠,变成行了。但看起来依然很不友好!

  

(3)通过函数和group by字句优化:
mysql>选择sid、sname总和(当课程=' jsj '然后马克结束)jsj,总和(当课程=坝钗摹比缓舐砜私崾?,宇文总和(当课程=' yingyu '然后马克结束)从vmark1 group by sid yingyu;
+ + - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - +
| | sid sname | jsj |宇文| yingyu |
+ + - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - +
| 1 |张三| 90 | 65 | 80 |
| 2 |李四| 80 | 98 | 90 |
+ + - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - +
2行组(0.00秒)

  

"哇塞,要的就是这效果。别动了. .就这样”。运营妹子激动的说。

  

好吧.over。

mysql需求场景——列转行