欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > MySQL中將一列以逗號分隔的值行轉列的實現

MySQL中將一列以逗號分隔的值行轉列的實現

熱門標簽:信陽穩定外呼系統運營商 南通自動外呼系統軟件 湖南人工外呼系統多少錢 石家莊電商外呼系統 百度地圖圖標標注中心 申請外呼電話線路 日照旅游地圖標注 芒果電話機器人自動化 廣東人工電話機器人

前言

有時會遇到沒有遵守第一范式設計模式的業務表。即一列中存儲了多個屬性值。如下表

pk value
1 ET,AT
2 AT,BT
3 AT,DT
4 DT,CT,AT

一般有這兩種常見需求(測試數據見文末)

1.得到所有的不重復的值,如

value
AT
BT
CT
DT
ET

SQL如下:

select distinct(substring_index(substring_index(a.col,',',b.help_topic_id+1),',',-1))
from
 (select group_concat(distinct `value`) as col from `row_to_col`) as a
join
 mysql.help_topic as b
on b.help_topic_id  (char_length(a.col) - char_length(replace(a.col,',',''))+1)

2.顯示每個值及其對應主鍵,如

pk value
1 ET
1 AT
2 AT
2 BT
3 AT
3 DT
4 DT
4 CT
4 AT

SQL如下:

select a.pk,substring_index(substring_index(a.col,',',b.help_topic_id+1),',',-1)
from
 (select `value` as col,pk from `row_to_col`) as a
join
 mysql.help_topic as b
on b.help_topic_id  (char_length(a.col) - char_length(replace(a.col,',',''))+1)

實現思路:

需求1:

1. 通過group_concat函數將value列的值拼接成一個逗號隔開的字符串,然后通過substring_index函數對字符串進行截取
2. 通過substring_index函數特性,我們就需要知道字符串有多少個逗號,并且要告訴每個逗號的位置
3. 逗號個數=char_length(字符串)-char_length(replace(字符串,',',''))
4. 逗號位置=mysql.help_topic.id 逗號個數[+1]
5. 最后通過distinct函數將截取后的單個值進行去重

注意:
1. mysql.help_topic表的自增id是從0開始,所以在進行截取時要對id進行+1。見: substring_index(a.col,',',b.help_topic_id+1)
2. value列最后一個字符不是逗號時:逗號個數+1是為了截取時不漏掉最后一個逗號后的值,即: char_length(a.col) - char_length(replace(a.col,',',''))+1;
value列最后一個字符是逗號時:逗號個數就不需要+1了,直接:char_length(a.col) - char_length(replace(a.col,',',''))
3. 因為截取時id要+1,所以在連接時取的 ,而不是 = 。見:b.help_topic_id (char_length(a.col) - char_length(replace(a.col,',',''))[+1])
4. mysql.help_topic(mysql version: 5.7.21-1)表的自增id,最大值為636。如果group_concat后的字符串中逗號個數大于該值,需要自己單獨處理自增id的值

需求2:思路基本與需求1同,只是最后的查詢不一樣

涉及到的函數:

length:返回字符串所占的字節數,是計算字段的長度。一個漢字或是中文符號是算三個字符,一個數字或字母或英文符號算一個字符。
char_length:返回字符串所占的字符數,不管漢字還是數字或者是字母或者符號(不分中英文)都算是一個字符。
replace(str,old_string,new_string): 將字符串中str中所有的old_string替換成new_string。
substring_index(被截取字段,關鍵字,關鍵字出現的次數):截取字符串。如果關鍵字出現的次數是負數 , 則是從后倒數,到字符串結束。
group_concat([DISTINCT] 要連接的字段(可多個,逗號隔開) [Order BY 排序字段 ASC/DESC] [Separator '分隔符']):
 將group by產生的同一個分組中的值連接起來,返回一個字符串結果。分隔符,默認逗號。

 測試數據:

DROP TABLE IF EXISTS `row_to_col`;
CREATE TABLE `row_to_col` (
 `pk` int(11) NOT NULL AUTO_INCREMENT,
 `value` varchar(255) DEFAULT NULL,
 PRIMARY KEY (`pk`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

INSERT INTO `row_to_col` VALUES ('1', 'ET,AT');
INSERT INTO `row_to_col` VALUES ('2', 'AT,BT');
INSERT INTO `row_to_col` VALUES ('3', 'AT,DT');
INSERT INTO `row_to_col` VALUES ('4', 'DT,CT,AT');

參考:
https://blog.csdn.net/liuzhoulong/article/details/51729168
https://blog.csdn.net/ldl22847/article/details/47609727

到此這篇關于MySQL中將一列以逗號分隔的值行轉列的實現的文章就介紹到這了,更多相關MYSQL 逗號分割行轉列內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 當Mysql行鎖遇到復合主鍵與多列索引詳解
  • Mysql 相鄰兩行記錄某列的差值方法
  • mysql指定某行或者某列的排序實現方法
  • mysql 列轉行,合并字段的方法(必看)
  • mysql列轉行以及年月分組實例
  • mysql 列轉行的技巧(分享)
  • mysql 行轉列和列轉行實例詳解
  • mysql 行列動態轉換的實現(列聯表,交叉表)
  • 數據庫實現行列轉換(mysql示例)
  • MySQL 中行轉列的方法

標簽:天津 牡丹江 合肥 公主嶺 呼和浩特 阿里 沈陽 惠州

巨人網絡通訊聲明:本文標題《MySQL中將一列以逗號分隔的值行轉列的實現》,本文關鍵詞  MySQL,中將,一列,以,逗號,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySQL中將一列以逗號分隔的值行轉列的實現》相關的同類信息!
  • 本頁收集關于MySQL中將一列以逗號分隔的值行轉列的實現的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    欧美人与性动xxxx| 一区二区三区在线观看视频| 日本在线不卡视频| 高清中文字幕mv的电影| 欧美日韩亚洲丝袜制服| 一区二区三区国产| 色欲欲www成人网站| 欧美午夜精品一区二区蜜桃 | 视频在线观看一区| 欧美xxxx黑人| 成人午夜电影久久影院| 亚洲AV成人无码网站天堂久久| 久久一夜天堂av一区二区三区| 麻豆成人久久精品二区三区小说| 欧美无人区码suv| 欧美一卡2卡三卡4卡5免费| 丝袜国产日韩另类美女| 国产精品手机在线观看| 欧美一区二区福利视频| 免费精品视频最新在线| 91精彩刺激对白露脸偷拍| 精品国产不卡一区二区三区| 精品一区在线看| 激情五月深爱五月| 欧美激情艳妇裸体舞| 成人午夜在线播放| 在线精品观看国产| 亚洲国产成人精品视频| 中文字幕精品久久久| 欧美成va人片在线观看| 久久99久久久欧美国产| 久草手机视频在线观看| √…a在线天堂一区| 人妻巨大乳一二三区| 91精品久久久久久久99蜜桃 | 国产精品一二一区| 午夜少妇久久久久久久久| 一区二区三区四区乱视频| 中文字幕乱视频| 精品剧情在线观看| 国产91精品入口| 欧美丝袜丝交足nylons| 日韩av电影一区| 貂蝉被到爽流白浆在线观看| 亚洲视频图片小说| 国产二级一片内射视频播放| www久久精品| 99v久久综合狠狠综合久久| 欧美日本在线播放| 精品伊人久久久久7777人| a在线视频播放观看免费观看| 亚洲一区二区偷拍精品| 亚洲av无码国产精品麻豆天美| 国产精品欧美久久久久一区二区| 色哟哟网站在线观看| 精品国产乱码久久久久久牛牛| 成人免费的视频| 日韩一卡二卡三卡国产欧美| 国产精品一二三在| 欧美精品久久一区| 国产九色精品成人porny| 欧美亚洲国产一卡| 激情伊人五月天久久综合| 国产麻豆一精品一av一免费| 99热精品免费| 免费观看成人鲁鲁鲁鲁鲁视频| 乱h高h女3p含苞待放| 偷拍日韩校园综合在线| 男人的午夜天堂| 亚洲第一成年网| 一本一本久久a久久| 亚洲一区二区四区蜜桃| 国产wwwwxxxx| 午夜精品福利一区二区三区蜜桃| 女同久久另类69精品国产| 亚洲一二三区视频在线观看| 中文字幕伦理片| 午夜激情久久久| 色综合天天综合狠狠| 蜜桃av一区二区三区| 欧洲精品视频在线观看| 激情综合色丁香一区二区| 在线电影一区二区三区| 大陆成人av片| 久久综合视频网| 一级黄色片毛片| 中文字幕综合网| jizz日本在线播放| 三级一区在线视频先锋| 欧美曰成人黄网| 国产91在线|亚洲| 亚洲精品一区二区三区99| 美女露出粉嫩尿囗让男人桶| 国产精品成人免费精品自在线观看| 一级黄色片大全| 亚洲成人免费影院| 私库av在线播放| 国产精品一区二区久久不卡| 欧美电视剧免费观看| 久久精品无码专区| 又紧又大又爽精品一区二区| 疯狂试爱三2浴室激情视频| 狠狠色狠狠色综合| 精品久久久久久亚洲综合网| 国产精品扒开腿做爽爽爽a片唱戏 亚洲av成人精品一区二区三区 | 一区二区三区伦理片| 日韩中文字幕不卡| 欧美日本免费一区二区三区| 成人午夜视频福利| 国产欧美精品国产国产专区| 亚洲人成人无码网www国产| 亚洲1区2区3区4区| 欧美中文一区二区三区| 不卡一区二区三区四区| 中文天堂在线一区| 日本美女bbw| 另类小说色综合网站| 师生出轨h灌满了1v1| 亚洲欧美在线高清| 中文字幕在线2021| 成av人片一区二区| 日韩一区有码在线| 一本色道久久综合亚洲91| 成人丝袜高跟foot| 国产精品欧美一区喷水| 神马午夜精品91| 成人午夜碰碰视频| 国产精品国产三级国产| 欧美特级一级片| 99r精品视频| 夜夜操天天操亚洲| 欧美日韩精品综合在线| 337p日本欧洲亚洲大胆张筱雨 | 99re亚洲国产精品| 亚洲欧洲综合另类| 欧美综合在线视频| 一区二区在线免费观看视频| 亚洲第一综合色| 555www色欧美视频| 一女三黑人理论片在线| 美女视频网站久久| 国产亚洲精品久| 国产免费久久久久| 91网上在线视频| 午夜精品久久一牛影视| 日韩美女天天操| 国产精品久久免费观看| 国产成人av一区二区三区在线观看| 国产精品久久久一本精品| 色网站国产精品| 性农村xxxxx小树林| 日韩二区三区四区| 欧美精品一区二区三区久久久 | 欧美三级蜜桃2在线观看| 最新版天堂资源在线| 青青草精品视频| 久久久久亚洲综合| 老湿机69福利| 亚洲一级Av无码毛片久久精品| 免费在线成人网| 国产精品视频yy9299一区| 一本大道久久a久久综合| 中文字幕在线国产| 久久99热狠狠色一区二区| 国产精品久久久久久亚洲毛片 | 男人网站在线观看| 极品美女销魂一区二区三区免费| 国产精品乱子久久久久| 欧美日韩国产不卡| 天堂在线中文视频| 97精品久久久午夜一区二区三区 | 懂色av蜜臀av粉嫩av永久| eeuss鲁片一区二区三区| 亚洲第一搞黄网站| 久久精品欧美日韩精品| 色噜噜狠狠色综合欧洲selulu| 欧美夫妇交换xxx| 国产高清在线精品| 亚洲一区二区三区四区五区黄| 精品日韩一区二区| 国产大学生自拍| 五月开心播播网| 成人激情黄色小说| 日日摸夜夜添夜夜添精品视频| 欧美国产一区二区在线观看| 精品视频资源站| 久久精品国产澳门| 国产精品久久久久久久久久久免费看 | 国产精品水嫩水嫩| 欧美巨大另类极品videosbest| 色综合99久久久无码国产精品| 99国产精品久久久| 激情综合色丁香一区二区| 亚洲一二三四区不卡| 国产拍揄自揄精品视频麻豆| 678五月天丁香亚洲综合网| 黄色录像二级片| 中文字幕免费高清| 美女被爆操网站| 国产suv精品一区二区6|