首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MYSQL同一表的多行,以根据条件生成多列

MYSQL同一表的多行,以根据条件生成多列
EN

Stack Overflow用户
提问于 2013-03-06 14:04:55
回答 1查看 463关注 0票数 0

Schema at Fiddle

结果是:我想要获取具有'PRE‘和/或’msr_name‘的记录

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2013-03-06 14:13:52

代码语言:javascript
复制
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');

我的输出结果是:

代码语言:javascript
复制
+-------+-----------+-----------+-----------+-----------+
| 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 Fiddle Demo

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15240136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档