天天看點

mysql select 合并列_mysql 行轉列和合并列

文中所用資料庫格式如下

mysql select 合并列_mysql 行轉列和合并列

查詢所有學生 ORACLE開發,J2EE從入門到精通,EJB及設計模式 這三門課程的分數

SELECT

sc.grade,

tc.cname,

sc.sno

FROM

t_score sc

JOIN t_course tc ON sc.cno = tc.cno where cname='ORACLE開發' or cname='J2EE從入門到精通' or cname='EJB及設計模式’

我們查詢出來的結果如下

mysql select 合并列_mysql 行轉列和合并列

要把它從行轉為列,,sql 如下

SELECT

t1.sno,

MAX( CASE t1.cname WHEN 'ORACLE開發' THEN t1.grade ELSE 0 END ) ORACLE開發,

MAX( CASE t1.cname WHEN 'J2EE從入門到精通' THEN t1.grade ELSE 0 END ) J2EE從入門到精通,

MAX( CASE t1.cname WHEN 'EJB及設計模式' THEN t1.grade ELSE 0 END ) EJB及設計模式

FROM

(

SELECT

sc.grade,

tc.cname,

sc.sno

FROM

t_score sc

JOIN t_course tc ON sc.cno = tc.cno

) t1

GROUP BY

t1.sno

結果

mysql select 合并列_mysql 行轉列和合并列

将課程名字和成績放在一列中,使用group_concat 函數

-- 兩列合并為一列

SELECT

sno,

GROUP_CONCAT( cname, ':', grade ) AS 成績

FROM

t_score sc

JOIN t_course co ON co.cno = sc.cno

GROUP BY

sno

得到的結果如下

mysql select 合并列_mysql 行轉列和合并列

也可以使用concat(比較适用于姓和名字)

-- 兩列合為一列

select concat(cno,cname) from t_course

mysql select 合并列_mysql 行轉列和合并列

标簽:grade,合并,t1,轉列,cname,mysql,sc,cno,tc

來源: https://blog.csdn.net/Zhang_0507/article/details/106589208