mysql需求情境-列轉行

來源:互聯網
上載者:User

標籤:mysql sql最佳化 select

由於是類比情境,直入主題,表名稱及結構定義很low,請忽視!

(1)現有學生分數表如下:
mysql> select * from vmark1;
+-----+--------+--------+------+
| sid | sname | course | mark |
+-----+--------+--------+------+
| 1 | 張三 | jsj | 90 |
| 1 | 張三 | yuwen | 65 |
| 1 | 張三 | yingyu | 80 |
| 2 | 李四 | jsj | 80 |
| 2 | 李四 | yuwen | 98 |
| 2 | 李四 | yingyu | 90 |
+-----+--------+--------+------+
6 rows in set (0.00 sec)

(2)需求是以更直觀的方式,查看學生的成績。細化也就是把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)通過函數和group by字句最佳化:
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)

“哇塞,要的就是這效率。別動了。。就這樣”。運營妹子激動的說。

好吧。over.

mysql需求情境-列轉行

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.