我保存在數據庫中列由逗號 前分隔多個關鍵字:AAAA,BBBB,CCCC ....如何選擇數據庫不同的關鍵字不指定任何關鍵字
有許多行:
例如: 行1 = AAAA,BBBB 行2 = AAAA,CCCC,DDDDD .. 等
我想獲得與所有不同的關鍵字(無重複)的陣列。
預先感謝您!
我保存在數據庫中列由逗號 前分隔多個關鍵字:AAAA,BBBB,CCCC ....如何選擇數據庫不同的關鍵字不指定任何關鍵字
有許多行:
例如: 行1 = AAAA,BBBB 行2 = AAAA,CCCC,DDDDD .. 等
我想獲得與所有不同的關鍵字(無重複)的陣列。
預先感謝您!
創建表:
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;
我不知道爲什麼,但你的例子不適合我。 –
你使用什麼數據庫,這是在MySQL上測試的? –
我不知道爲什麼,但你的例子不適合我。 要麼你不明白我想要的結果還是我錯編輯你的榜樣。 能否請您給我解釋一下更詳細你給的例子嗎? 我的表格名稱:jobs_details 我的專欄名稱:關鍵字 我沒有每行註冊詞的確切數量,一行可以有兩個關鍵字(例如:aaaa,ddddd),其他行可以有四個(例如: aaaa,bbbb,gggg,kkkkk) 和結果我想成爲一個像下面這樣的數組: array(aaaa,bbbb,dddd,gggg,kkkkk);所有不同的話 –
聽起來像是你要SELECT DISTINCT掀起了PIVOT或UNPIVOT功能的結果。這些條款上的一些Google搜索可能會有用。 – CollinD
在SQL中?你使用的是哪個數據庫? –
這是一個問題? – Cypher