MySQL – convierte la tabla en una tabla diferente

Probablemente no estoy viendo las cosas muy claras en este momento, pero tengo una tabla en MySQL que se ve así:

ID | a | b | c 1 | a1 | b1 | c1 2 | a2 | b2 | c2 

Por alguna razón (en realidad, una combinación en otra tabla, basada en la ID , pero creo que si alguien puede ayudarme con esta parte, puedo hacer el rest), necesitaba esas filas para ser así:

 1 | a1 | a 1 | b1 | b 1 | c1 | c 2 | a2 | a 2 | b2 | b 2 | c2 | c 

Entonces, básicamente, necesito ver las filas como: ID , value columntitle , value ¿Hay alguna forma de hacerlo fácilmente?

    Está intentando desvincular los datos. MySQL no tiene una función unpivot, por lo que deberá usar una consulta UNION ALL para convertir las columnas en filas:

     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 

    Ver SQL Fiddle con demostración .

    Esto también se puede hacer usando 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 

    Ver SQL Fiddle con demostración

    Intenta usar UNION TODO .

     SELECT ID, a, 'a' FROM tbl WHERE ID = 1 UNION SELECT ID, b, 'b' FROM tbl WHERE ID = 2