(2)需求是以更直觀的方式,查看學(xué)生的成績。細(xì)化也就是把mark這列的值,以行的形式展示。通過case..when語句查詢: mysql> select sid,sname,case when course='jsj' then mark end jsj,case when course='yuwen' then mark end yuwen,case when course='yingyu' then mark end yingyu from vmark1; +-----+--------+------+-------+--------+ | sid | sname | jsj | yuwen | yingyu | +-----+--------+------+-------+--------+ | 1 | 張三 | 90 | NULL | NULL | | 1 | 張三 | NULL | 65 | NULL | | 1 | 張三 | NULL | NULL | 80 | | 2 | 李四 | 80 | NULL | NULL | | 2 | 李四 | NULL | 98 | NULL | | 2 | 李四 | NULL | NULL | 90 | +-----+--------+------+-------+--------+ 6 rows in set (0.01 sec)
我靠,變成行了。但看起來依然很不友好!
(3)通過函數(shù)和group by字句優(yōu)化: mysql> select sid,sname,sum(case when course='jsj' then mark end) jsj,sum(case when course='yuwen' then mark end) yuwen,sum(case when course='yingyu' then mark end) yingyu from vmark1 group by sid; +-----+--------+------+-------+--------+ | sid | sname | jsj | yuwen | yingyu | +-----+--------+------+-------+--------+ | 1 | 張三 | 90 | 65 | 80 | | 2 | 李四 | 80 | 98 | 90 | +-----+--------+------+-------+--------+ 2 rows in set (0.00 sec)