搜尋

首頁  >  問答  >  主體

MySQL - 如何將列轉換為行?

<p><br /></p> <pre class="brush:php;toolbar:false;">ID | a | b | c 1 | a1 | b1 | c1 2 | a2 | b2 | c2</pre> <p>如何將行重新組織為ID,列標題,值? </p> <pre class="brush:php;toolbar:false;">1 | a1 | a 1 | b1 | b 1 | c1 | c 2 | a2 | a 2 | b2 | b 2 | c2 | c</pre> <p><br /></p>
P粉533898694P粉533898694497 天前561

全部回覆(1)我來回復

  • P粉511896716

    P粉5118967162023-07-25 00:05:48

    您正在嘗試對資料進行反轉。 MySQL沒有反轉函數,因此您需要使用UNION ALL查詢將列轉換為行:

    select id, 'a' col, a value
    from yourtable
    union all
    select id, 'b' col, b value
    from yourtable
    union all
    select id, 'c' col, c value
    from yourtable

    See SQL Fiddle with Demo.

    這也可以使用CROSS JOIN來實現:

    select t.id,
      c.col,
      case c.col
        when 'a' then a
        when 'b' then b
        when 'c' then c
      end as data
    from yourtable t
    cross join
    (
      select 'a' as col
      union all select 'b'
      union all select 'c'
    ) c

    See SQL Fiddle with Demo

    回覆
    0
  • 取消回覆