MySQL - превратить таблицу в другую таблицу
В данный момент я, вероятно, не вижу в этом ничего понятного, но у меня есть таблица в MySQL, которая выглядит так:
ID | a | b | c
1 | a1 | b1 | c1
2 | a2 | b2 | c2
По какой-то причине (на самом деле соединение в другой таблице - на основе ID
, но я думаю, что если кто-то может помочь мне с этой частью, я могу сделать все остальное самостоятельно), мне нужны были эти строки, чтобы это было так
1 | a1 | a
1 | b1 | b
1 | c1 | c
2 | a2 | a
2 | b2 | b
2 | c2 | c
В принципе, мне нужно просмотреть строки, например: ID
, columntitle
, value
Есть ли способ сделать это легко?
Ответы
Ответ 1
Вы пытаетесь отключить данные. У MySQL нет функции univot, поэтому вам нужно будет использовать запрос 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
См. 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
Смотрите скрипт SQL с демонстрацией
Ответ 2
Попробуйте использовать UNION ALL.
SELECT ID, a, 'a'
FROM tbl
WHERE ID = 1
UNION
SELECT ID, b, 'b'
FROM tbl
WHERE ID = 2