簡體   English   中英

MYSQL根據條件,同一表的多行會導致多列

[英]MYSQL Multiple rows of same table to result in multiple columns depending on the criteria

小提琴的架構

結果是:我想獲取具有msr_name或'PRE'或'POST'或兩者均為的記錄

id  |  msr_name1(only pre)   |  msr_data1(only pre)  |  msr_name2(only post)   |  msr_data2(only post)

16703      PRE                            pre_data                              POST                              post_data

16711      PRE                            pre_data                              NULL                              NULL

16715      NULL                            NULL                                 POST                              post_data
SELECT a.id AS id, 
       b.msr_name AS msr_name1, b.msr_data AS msr_data1,
       c.msr_name AS msr_name2, c.msr_data AS msr_data2
FROM (SELECT DISTINCT id FROM Students WHERE msr_name IN ('PRE', 'POST')) AS a
LEFT JOIN Students AS b ON (a.id=b.id AND b.msr_name = 'PRE')
LEFT JOIN Students AS c ON (a.id=c.id AND c.msr_name = 'POST');

對我來說輸出是:

+-------+-----------+-----------+-----------+-----------+
| id    | msr_name1 | msr_data1 | msr_name2 | msr_data2 |
+-------+-----------+-----------+-----------+-----------+
| 16703 | PRE       | pre_data  | POST      | post_data |
| 16711 | PRE       | pre_data  | NULL      | NULL      |
| 16715 | NULL      | NULL      | POST      | post_data |
+-------+-----------+-----------+-----------+-----------+

SQL小提琴演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM