2015-10-27 15 views
-3

我保存在數據庫中列由逗號 前分隔多個關鍵字:AAAA,BBBB,CCCC ....如何選擇數據庫不同的關鍵字不指定任何關鍵字

有許多行:

例如: 行1 = AAAA,BBBB 行2 = AAAA,CCCC,DDDDD .. 等

我想獲得與所有不同的關鍵字(無重複)的陣列。

預先感謝您!

+0

聽起來像是你要SELECT DISTINCT掀起了PIVOT或UNPIVOT功能的結果。這些條款上的一些Google搜索可能會有用。 – 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

我不知道爲什麼,但你的例子不適合我。 要麼你不明白我想要的結果還是我錯編輯你的榜樣。 能否請您給我解釋一下更詳細你給的例子嗎? 我的表格名稱:jobs_details 我的專欄名稱:關鍵字 我沒有每行註冊詞的確切數量,一行可以有兩個關鍵字(例如:aaaa,ddddd),其他行可以有四個(例如: aaaa,bbbb,gggg,kkkkk) 和結果我想成爲一個像下面這樣的數組: array(aaaa,bbbb,dddd,gggg,kkkkk);所有不同的話 –