mysql如何实现列转行

avatar
作者
筋斗云
阅读量:0

在MySQL中实现列转行可以使用UNION ALL操作符来实现。以下是一个示例:

假设有一个表格students,包含以下5列:id, name, subject1, subject2, subject3,内容如下:

idnamesubject1subject2subject3
1AliceMathEnglishScience
2BobHistoryMathEnglish

要将这个表格的subject1, subject2, subject3列转换为行数据,可以使用以下SQL查询:

SELECT id, name, 'subject1' as subject_name, subject1 as subject_value FROM students UNION ALL SELECT id, name, 'subject2' as subject_name, subject2 as subject_value FROM students UNION ALL SELECT id, name, 'subject3' as subject_name, subject3 as subject_value FROM students 

这个查询将原表格的每一行转换为三行,每一行包含id, name, subject_name, subject_value列,其中subject_name列表示原来的subject1, subject2, subject3列的名称,subject_value列表示对应的值。

执行以上SQL查询后,得到的结果如下:

idnamesubject_namesubject_value
1Alicesubject1Math
1Alicesubject2English
1Alicesubject3Science
2Bobsubject1History
2Bobsubject2Math
2Bobsubject3English

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!