2013-03-15 3 views
1

У меня есть таблица со следующей структурой:Merge MySQL colums к строкам

+-----+------------+------------+------------+------------+ 
| ID | FEATURE1 | FEATURE2 | FEATURE3 | FEATURE4 | 
+-----+------------+------------+------------+------------+ 
| 1 | red  | blue  | black  | grey  | 
| 2 | yellow |   |   |   | 
| 3 | orange | red  | green  | golden | 
| 4 | orange | grey  | blue  |   | 

То, что я хотел бы сделать, это запрос таблицы и вернуть все возможные функции для использования в вызове автозаполнения. Мне нужен запрос только для возврата уникальных значений.

SELECT (FEATURE1, FEATURE2, FEATURE3, FEATURE4, FEATURE5) FEATURE 
FROM products 
WHERE `FEATURE` LIKE 'gr%\' 

Мой желаемый результат будет:

+----------+ 
| FEATURE | 
+----------+ 
| green | 
| grey | 
+0

CONCAT все столбцы и фильтровать с 'гр%'. –

+0

Возвращает уникальные значения или отдельные значения? –

ответ

4

В принципе, вы можете использовать UNION объединить все столбцы в одной строке.

SELECT * 
FROM 
(
    SELECT FEATURE1 FEATURE FROM TableName 
    UNION 
    SELECT FEATURE2 FEATURE FROM TableName 
    UNION 
    SELECT FEATURE3 FEATURE FROM TableName 
    UNION 
    SELECT FEATURE4 FEATURE FROM TableName 
) sub 
WHERE FEATURE LIKE 'gr%' 
+0

Спасибо, что работает отлично. У меня есть несколько вопросов. Должен ли я добавлять индексы в столбцы FEATURE? – user2122889

+0

приветствуется ': D' что это? –

+0

Должен ли я добавлять индексы в столбцы FEATURE? Как узнать MYSQL, чтобы выбрать значения DISTINCT? Должен ли я создать отдельную таблицу для хранения функций, если я хочу, чтобы в этой таблице было большое количество записей? – user2122889

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