2015-10-27 2 views
-3

Я спасаю в столбце базы данных нескольких ключевых слов, разделенных запятые например: Аааа, BBBB, КЦИК ....Как выбрать различные ключевые слова из базы данных без указания всех ключевых слов,

Есть много строк:

например: строки 1 = AAAA, BBBB строки 2 = AAAA, КЦИК, DDDDD .. т.д.

Я хотел бы получить массив со всеми разными ключевыми словами (без дубликатов).

Спасибо заранее!

+0

Похоже, вы хотите, чтобы SELECT DISTINCT от результатов разворота или UNPIVOT функции. Некоторые поисковые запросы на этих условиях могут быть полезными. – CollinD

+0

В SQL? Какую базу данных вы используете? –

+0

Это вопрос? – Cypher

ответ

0

Создать таблицу:

CREATE TABLE tablename (
    id INT, 
    name VARCHAR(20)); 

INSERT INTO tablename VALUES 
(1, 'aaaa,bbbb'), 
(2, 'aaaa,cccc,dddd'); 

CREATE TABLE numbers (
    n INT PRIMARY KEY); 

INSERT INTO numbers VALUES (1),(2),(3),(4),(5),(6); 

огня запрос:

SELECT group_concat(name) as result 
FROM 
(
SELECT distinct name 
FROM 
(
SELECT 
    tablename.id, 
    SUBSTRING_INDEX(SUBSTRING_INDEX(tablename.name, ',', numbers.n), ',', -1) name 
FROM 
    numbers INNER JOIN tablename 
    ON CHAR_LENGTH(tablename.name) 
    -CHAR_LENGTH(REPLACE(tablename.name, ',', ''))>=numbers.n-1 
ORDER BY 
    id, n 
) tab1 
) tab2; 
+0

Я не знаю почему, но ваш пример не работает для меня. –

+0

какая база данных вы используете, это проверено на mysql? –

+0

Я не знаю почему, но ваш пример не работает для меня. Либо вы не поняли результат, который мне нужен, либо я неправильно отредактировал ваш пример. Не могли бы вы более подробно объяснить мне пример, который вы дали? My table name: jobs_details Имя моего столбца: ключевые слова У меня нет точного количества зарегистрированных слов в строках, одна строка может иметь два ключевых слова (например: aaaa, ddddd), другая строка может иметь четыре (например: aaaa, bbbb, gggg, kkkkk) и в результате я хочу быть массивом, подобным приведенному ниже: массив (aaaa, bbbb, dddd, gggg, kkkkk); все отличные слова –

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