欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL中列如何以逗號(hào)分隔轉(zhuǎn)成多行

 更新時(shí)間:2023年02月07日 09:46:57   作者:搬運(yùn)Gong  
這篇文章主要介紹了MySQL中列如何以逗號(hào)分隔轉(zhuǎn)成多行問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

MySQL列以逗號(hào)分隔轉(zhuǎn)成多行

業(yè)務(wù)場(chǎng)景:

在數(shù)據(jù)庫中,有一張的一個(gè)字段存儲(chǔ)方式是采用以逗號(hào)分隔存儲(chǔ)多個(gè)值,現(xiàn)在需要將其進(jìn)行拆分成多個(gè)獨(dú)立的值,與另外一張字典表進(jìn)行關(guān)聯(lián),取的最終的字典表中的 label,再以逗號(hào)拼接成顯示 label 的形式展現(xiàn)。

場(chǎng)景

表中存儲(chǔ)的值:

期待最終的展現(xiàn)效果:

        甜品,休閑食品,飲料

解決方案

1. 將一列轉(zhuǎn)成多行

select v1.id,SUBSTRING_INDEX(SUBSTRING_INDEX(v1.intention_exhibits, ',', b.help_topic_id + 1), ',', - 1) AS exhibit
                      from test v1
                               JOIN mysql.help_topic AS b ON b.help_topic_id < (length(v1.intention_exhibits) -
                                                             length(REPLACE(v1.intention_exhibits, ',', '')) + 1)
where v1.id = '63591ee4f8204212837e447b34c61fef';

說明:

mysql.help_topic 表的自增id是從0開始,所以在進(jìn)行截取時(shí)要對(duì)id進(jìn)行+1。【系統(tǒng)表,不建議使用,真正的線上環(huán)境,dba 是不允許使用系統(tǒng)表的,所以,我們需要自己創(chuàng)建一張類似的表】

創(chuàng)建一張自增表,來代替 mysql.help_topic 系統(tǒng)表,自增表的值,需要大于自己業(yè)務(wù)表中逗號(hào)拆出來的集合數(shù):

create table add_self
(
    id int(20) null
);
 
INSERT INTO add_self (id) VALUES (0);
INSERT INTO add_self (id) VALUES (1);
INSERT INTO add_self (id) VALUES (2);
INSERT INTO add_self (id) VALUES (3);
INSERT INTO add_self (id) VALUES (4);
INSERT INTO add_self (id) VALUES (5);
INSERT INTO add_self (id) VALUES (6);
INSERT INTO add_self (id) VALUES (7);
INSERT INTO add_self (id) VALUES (8);
INSERT INTO add_self (id) VALUES (9);
INSERT INTO add_self (id) VALUES (10);

2. 最終 SQL

select group_concat(edn.name)
from (
select v1.id,SUBSTRING_INDEX(SUBSTRING_INDEX(v1.intention_exhibits, ',', b.id + 1), ',', - 1) AS exhibit
                      from test1 v1
                               JOIN add_self AS b ON b.id < (length(v1.intention_exhibits) -
                                                             length(REPLACE(v1.intention_exhibits, ',', '')) + 1)
    where v1.id = '63591ee4f8204212837e447b34c61fef') t
    left join test2 edn on t.exhibit = edn.local_key;

使用到的相關(guān)函數(shù):

  • group_concat
  • substring_index
  • length

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • mysql5.7.18安裝時(shí)提示無法找到入口問題的解決方法

    mysql5.7.18安裝時(shí)提示無法找到入口問題的解決方法

    這篇文章主要為大家詳細(xì)介紹了mysql5.7.18安裝時(shí)出現(xiàn)無法找到入口問題的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • mysql中插入隨機(jī)字符串?dāng)?shù)據(jù)及常見問題說明

    mysql中插入隨機(jī)字符串?dāng)?shù)據(jù)及常見問題說明

    這篇文章主要介紹了mysql中插入隨機(jī)字符串?dāng)?shù)據(jù)及常見問題說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • 使用Rotate Master實(shí)現(xiàn)MySQL 多主復(fù)制的實(shí)現(xiàn)方法

    使用Rotate Master實(shí)現(xiàn)MySQL 多主復(fù)制的實(shí)現(xiàn)方法

    眾所周知,MySQL只支持一對(duì)多的主從復(fù)制,而不支持多主(multi-master)復(fù)制
    2012-05-05
  • MySQL存儲(chǔ)過程的深入講解(in、out、inout)

    MySQL存儲(chǔ)過程的深入講解(in、out、inout)

    這篇文章主要給大家介紹了關(guān)于MySQL存儲(chǔ)過程(in、out、inout)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • MySQL主從復(fù)制不一致的原因分析以及解決

    MySQL主從復(fù)制不一致的原因分析以及解決

    這篇文章主要介紹了MySQL主從復(fù)制不一致的原因分析以及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • mysql server 8.0.3安裝配置方法圖文教程

    mysql server 8.0.3安裝配置方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了mysql server 8.0.3安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • 深入理解Mysql事務(wù)隔離級(jí)別與鎖機(jī)制問題

    深入理解Mysql事務(wù)隔離級(jí)別與鎖機(jī)制問題

    MySQL默認(rèn)的事務(wù)隔離級(jí)別是可重復(fù)讀,用Spring開發(fā)程序時(shí),如果不設(shè)置隔離級(jí)別默認(rèn)用MySQL設(shè)置的隔離級(jí)別,如果Spring設(shè)置了就用已設(shè)置的隔離級(jí)別,本文重點(diǎn)給大家介紹Mysql事務(wù)隔離級(jí)別與鎖機(jī)制的相關(guān)知識(shí),一起看看吧
    2021-09-09
  • mysql中的跨庫關(guān)聯(lián)查詢方法

    mysql中的跨庫關(guān)聯(lián)查詢方法

    這篇文章主要介紹了mysql中的跨庫關(guān)聯(lián)查詢方法,需要的朋友可以參考下
    2017-05-05
  • 深入了解MySQL中的慢查詢

    深入了解MySQL中的慢查詢

    什么是MySQL慢查詢呢?其實(shí)就是查詢的SQL語句耗費(fèi)較長(zhǎng)的時(shí)間。具體耗費(fèi)多久算慢查詢呢?這其實(shí)因人而異,有些公司慢查詢的閾值是100ms,有些的閾值可能是500ms。本文將通過示例和大家聊聊慢查詢的危害和常用場(chǎng)景,感興趣的可以了解一下
    2022-10-10
  • 登錄mysql報(bào)錯(cuò)Can‘t connect to MySQL server on ‘localhost:3306‘ (10061)解決方法

    登錄mysql報(bào)錯(cuò)Can‘t connect to MySQL server&n

    這篇文章主要給大家介紹了登錄mysql報(bào)錯(cuò) Can‘t connect to MySQL server on ‘localhost:3306‘ (10061)解決方法,文中有詳細(xì)的解決步驟,需要的朋友可以參考下
    2023-09-09

最新評(píng)論