我有一個表欄位存盤的資料類似這樣:
fashion scarf
mens plaid scarf
cashmere scarf for men
mens grey scarves
mens grey scarf
我需要取出這個欄位值的集合(無重復的單詞),回傳一個字串,結果是:
mens fashion plaid grey scarves cashmere scarf for men(單詞順序無所謂)
請問sql陳述句要怎么寫呀?
謝謝大家!!!
uj5u.com熱心網友回復:
-- 如果你的版本支持 JSON,可以用 JSON 處理,這樣相對容易
DROP TEMPORARY TABLE IF EXISTS t;
CREATE TEMPORARY TABLE t(value varchar(500));
INSERT INTO t VALUES
('fashion scarf'),
('mens plaid scarf'),
('cashmere scarf for men'),
('mens grey scarves'),
('mens grey scarf');
-- 合并關鍵字
SELECT @x:=JSON_MERGE(@x, CONCAT('{"', REPLACE(value, ' ', '":1, "'), '":1}') )
FROM t, (SELECT @x:='{}') x;
-- 所有不重復的關鍵字(需要格式的話,做一下字串替換)
SELECT JSON_KEYS(@x);
uj5u.com熱心網友回復:
不用json那么復雜,sql陳述句有查詢去充關鍵字,你百度一下就知道了uj5u.com熱心網友回復:
沒搜索到,請教更具體的
uj5u.com熱心網友回復:
哇,大佬,你還用我教更具體的啊,樓主問的問題我也沒了解很詳細,樓主是怎么存盤的程序,
是這樣:

還是這樣:
uj5u.com熱心網友回復:
我也不十分確定,就用我的那個資料樣本形式吧uj5u.com熱心網友回復:
select DISTINCT substring_index(substring_index(a.value,',',b.help_topic_id+1),',',-1)from
(select GROUP_CONCAT(REPLACE(value,' ',',')) value from t ) a
join
mysql.help_topic b
on b.help_topic_id < (length(a.value) - length(replace(a.value,',',''))+1);
uj5u.com熱心網友回復:
拆分不用先 GROUP_CONCAT的,畢竟長度未知,不 GROUP_CONCAT 都不好保證要拆分的個數在序號表的表示范圍內GROUP_CONCAT 的話,就更不好保證了
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/99603.html
標籤:MySQL
上一篇:mysqldump
