• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • MySQL行轉列與列轉行

    最近工作用到了好幾次列轉行,做個小總結。順道也總結一下行轉列
     
    話不多說,現在開始 ~~
     
     
     

    行轉列:

     
    轉換之前的表格,第三、四列分別為特征和數值
    在這里插入圖片描述
    圖1
     
     
    首先看第一次的執行sql:

    select
     id , name ,
     (case 特征 when '年齡' then 數值 else 0 end) as age,
     (case 特征 when '身高' then 數值 else 0 end) as height,
     (case 特征 when '體重' then 數值 else 0 end) as weight
    from user2

     
     
    第一次的執行sql效果:
    表二
    圖2
     
     
    行轉列關鍵點一
    1、首先行轉列的第一個關鍵點是用到了case when then else end , 查詢出的圖2新的表格3、4、5列(age、height、weight)是根據圖1的表格第3列特征那列的三種情況(身高、體重、年齡)來當作列名的,然后再取別名as ageas heightas weight。此時新表格的列已定好,行數還未發生改變,呈現圖二這種情況
     
     
    再來看一下第二次的執行sql:

    select
     id , name ,
     max(case 特征 when '年齡' then 數值 else 0 end) as age,
     max(case 特征 when '身高' then 數值 else 0 end) as height,
     max(case 特征 when '體重' then 數值 else 0 end) as weight
    from user2
     group by name

     
     
    第二次的執行sql效果:在這里插入圖片描述
    圖3
     
     
    行轉列關鍵點二
    2、相比于第一次sql,第二次sql多了group bymax,這也是行轉列的第二個關鍵點,將數據進行分組,再取每列的最大值。小明在圖2中是三條數據,通過max取每列的最大使得三條數據合并為一條數據,至此出現圖3這種我們需要的效果
     
     
    注意:
    1、行轉列時需要轉換的行中的值不可為非數字,否則影響max()的使用
     
     
     
     

    列轉行:

     
    轉換之前的表格,第三、四、五列分別為age、height、weight
    在這里插入圖片描述
    圖4
     
     
    執行sql:

    select id , name , '年齡' as 特征 , age as 數值 from user
     union
      select id , name , '身高' as 特征 , height as 數值 from user
       union 
        select id , name , '體重' as 特征 , weight as 數值 from user
         order by id

     
     
    執行sql之后的效果
    在這里插入圖片描述
    圖5
     
     
    相對于行轉列,列轉行就顯得更簡單一些,只用到了一個union
     
    列轉行關鍵點:
    union,使用'年齡' as 特征、'身高' as 特征、'體重' as 特征 來確定圖5第3列的列名與每行數據該列的值,使用age as 數值、height as 數值、weight as 數值來確定圖5第4列的列名與每行數據該列的值,3個select 查詢出3張表格,再通過union連接成一張表格
     
    union注意點
    使用union連接表時需要注意表的字段一致,此處我們3個select 查詢出3張表格字段是一致的。
     
     
    以上就是我對于MySQL行轉列與列轉行的學習總結,希望能對你的學習有所幫助,如有不正之處歡迎指正O(∩_∩)O

    版權聲明:本文為C2667378040原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/C2667378040/article/details/107864298

    智能推薦

    3D游戲編程與設計——游戲對象與圖形基礎章節作業與練習

    3D游戲編程與設計——游戲對象與圖形基礎章節作業與練習 3D游戲編程與設計——游戲對象與圖形基礎章節作業與練習 自學資源 作業內容 1、基本操作演練【建議做】 天空盒的制作: 地圖的制作: 整體效果: 2、編程實踐 項目要求: 項目結構: 代碼詳解: Actions: ISSActionCallback.cs SSAction.cs SSAction...

    FlycoTabLayout 的使用

    FlycoTabLayout 一個Android TabLayout庫,目前有3個TabLayout SlidingTabLayout:參照PagerSlidingTabStrip進行大量修改. 新增部分屬性 新增支持多種Indicator顯示器 新增支持未讀消息顯示 新增方法for懶癌患者 CommonTabLayout:不同于SlidingTabLayout對ViewPager依賴,它是一個不...

    爬蟲項目實戰八:爬取天氣情況

    爬取天氣情況 目標 項目準備 接口分析 代碼實現 效果顯示 寫入本地 目標 根據天氣接口,爬取接下來一周的天氣情況。 項目準備 軟件:Pycharm 第三方庫:requests,BeautifulSoup,csv 接口地址:http://api.k780.com:88/?app=weather.future&weaid=城市名&appkey=10003&sign=b59bc...

    關于web項目的目錄問題

    先給段代碼: 上面這個代碼一直出錯,我不知道原因,后面不停的查找資料發現了問題:我的web項目輸出目錄有問題,因為我也是第一次用idea寫web項目,發現很多bug 其實都沒有太大問題,我們需要注意的是你必須在out這個輸出文件夾中擁有這個文件,out輸出文件夾會默認過濾這些文件...

    二叉搜索樹轉化為雙向鏈表

    題目描述: 輸入一棵二叉搜索樹,將該二叉搜索樹轉換成一個排序的循環雙向鏈表。要求不能創建任何新的節點,只能調整樹中節點指針的指向。 為了讓您更好地理解問題,以下面的二叉搜索樹為例: 我們希望將這個二叉搜索樹轉化為雙向循環鏈表。鏈表中的每個節點都有一個前驅和后繼指針。對于雙向循環鏈表,第一個節點的前驅是最后一個節點,最后一個節點的后繼是第一個節點。 下圖展示了上面的二叉搜索樹轉化成的鏈表。&ldqu...

    猜你喜歡

    Cocos2d-x 2.0 網格動畫深入分析

    [Cocos2d-x相關教程來源于紅孩兒的游戲編程之路CSDN博客地址:http://blog.csdn.net/honghaier] 紅孩兒Cocos2d-X學習園地QQ2群:44208467加群寫:Cocos2d-x 紅孩兒Cocos2d-X學習園地QQ群:249941957[暫滿]加群寫:Cocos2d-x 本章為我的Cocos2d-x教程一書初稿。望各位看官多提建議! Cocos2d-x ...

    vue 子組件傳值父組件 emit

    vue 子組件傳值父組件  emit    ...

    解決Python數據可視化中文部分顯示方塊問題

    一、問題 代碼如下,發現標題的中文顯示的是方塊 如下圖 二、解決方法 一般數據可視化使用matplotlib庫,設置中文字體可以在導入之后添加兩句話(這里的SimHei指的是黑體,KaiTi指的是楷體) 三、效果 1.黑體: 2.楷體: 具體的其他字體可以在matplotlib\mpl-data\fonts\ttf找到~ 四、Windows的常用字體 黑體、楷體、仿宋是可以用的,其他的字體可能需要...

    Linux的LVM掛載(Centos)

    LVM掛載 1、虛擬機添加新增磁盤(如已添加可略過) 2、查看是否有新的硬盤 3、對磁盤分區 4、LVM磁盤創建 參考地址: https://blog.51cto.com/11555417/2158443 1、虛擬機添加新增磁盤(如已添加可略過) 1.點擊虛擬機,選擇硬盤,點擊添加,選擇SCSI硬盤,添加硬盤(如下圖所示)。 2、查看是否有新的硬盤 可以看到 /dev/sdb 是我們新建的磁盤5G...

    Java四大元注解介紹

    Java四大元注解介紹 什么是元注解? 元注解就是注解到注解上的注解。它們被用來提供對其它 annotation類型作說明。 Java5.0定義的元注解: @Retention、@Documented、@Target、@Inherited,這些類型和它們所支持的類在java.lang.annotation包中可以找到。如圖所示: 接下來我們看一下每個元注解的作用和相應分參數的使用說明。 @Docu...

    精品国产乱码久久久久久蜜桃不卡