1. 程式人生 > 其它 >mysql查詢-橫表豎表相互轉換-與橫標轉豎表關聯查詢

mysql查詢-橫表豎表相互轉換-與橫標轉豎表關聯查詢

一 豎錶轉橫表

1. 學生表成績表-豎表

2. 查詢資料

select * from student;

3. 想要將資料顯示為橫表, 即如下形式

資料顯示為橫表 sql語句:

select name as '姓名',
  max(case subject when '語文' then result else 0 end) '語文',
  max(case subject when '數學' then result else 0 end) '數學',
  max(case subject when '英語' then result else 0 end) '英語'
from student group by name;

二, 橫表變豎表

1. 建立橫表 - 學生成績表

2. 查詢資料

select * from student1;

3. 將橫表資料轉換為豎表的形式, 即如下形式:

對應的sql語句:

select*from
(
select 姓名 as Name , '語文' as Subject , 語文 as result from student1
union all
select 姓名 as Name , '數學' as Subject , 數學 as result from student1
union all
select 姓名 as Name , '物理' as Subject , 物理 as result from student1


) t
order by name;

三,橫表變豎表的-關聯查詢

查詢出結果的sql:

SELECT cp.person_name,cm.url from cm_person cp INNER JOIN cm_midia cm on cp.id_front_ukid = cm.id
UNION
SELECT cp.person_name,cm.url from cm_person cp INNER JOIN cm_midia cm on cp.id_back_ukid = cm.id
UNION
SELECT cp.person_name,cm.url from cm_person cp INNER JOIN cm_midia cm on cp.id_header_ukid = cm.id;

愛生活,更愛給我帶來生活的人