2013-12-05 6 views
2

У меня есть таблица с описанием, как сильфономКак преобразовать повторяющиеся столбцы в отдельные строки?

Title1 Value1 Title2 Value2 Title3 Value3 
------------------------------------------ 
haha 123 hohoho 321 kikiki 1223 

ab  212 iii  233 kjkj 7474 

и я хочу, чтобы запросить как сильфон

Title Value 
-------------- 
haha 123 

hohoho 321 

kikiki 1223 

ab  212 

iii  233 

kjkj 7474 

и там облаком быть повторяющимися значениями. Если у вас 3 дубликата, в результатах найдено 3 дубликата.

Есть ли хорошие способы запроса?

+0

эр, ваш вопрос читает немного двусмысленно мне; вы хотите _get rid_ из дубликатов или _keep_ их? Зачем? Вообще говоря, вам не нужно дублировать строки (учитывая, как работает SQL) - это особенно верно, если вы постоянно наводите таблицу на новую форму ... –

ответ

4

Это должно сделать трюк:

SELECT Title1 Title, Value1 Value FROM table 
UNION ALL 
SELECT Title2, Value2 FROM table 
UNION ALL 
SELECT Title3, Value3 FROM table 
+1

+1 в качестве примечания к примечанию @walkingFox помните, что UNION или UNIONS ALL всегда используют внутреннюю временную таблицу (HEAP или MyISAM на диске) -> см. Http://dba.stackexchange.com/questions/54178/how-to-get-rid-of-using-temporary-when -using-distinct-in-mysql/54184 # 54184, так что следите, сколько данных вы выберете с помощью этой конструкции. –

+0

Абсолютно. Лучший подход был бы не в том, чтобы даже хранить данные таким образом, в первую очередь :) –

1

попробовать это:

SELECT Title1 Title, Value1 Value FROM <tablename> 
UNION ALL (SELECT Title2, Value2 FROM <tablename>) 
UNION ALL (SELECT Title3, Value3 FROM <tablename>) 
+1

в будущем не копировать кошку ответ .. ваш ответ такой же, как и выше – sumit

+0

Я не скопирован, но да ответ такой же, – uvais

Смежные вопросы