亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

MySQL GROUP_CONCAT詳解:語(yǔ)法、避坑與性能優(yōu)化

MySQL GROUP_CONCAT詳解:語(yǔ)法、避坑與性能優(yōu)化 做MySQL開發(fā)和運(yùn)維的同學(xué)應(yīng)該都有過(guò)這種經(jīng)歷一張訂單表配一張訂單商品明細(xì)表業(yè)務(wù)上要展示“訂單下所有商品的編號(hào)”如果不用函數(shù)只能在應(yīng)用層寫循環(huán)嵌套查詢或者在DAO層一次性查出所有明細(xì)再分組拼接。我第一次遇到這種需求時(shí)寫了一大段Java代碼循環(huán)里還做了排序去重又慢又難看。后來(lái)看到研發(fā)同事的SQL里冒出個(gè)GROUP_CONCAT()一行函數(shù)直接解決當(dāng)時(shí)就覺(jué)得這函數(shù)是真的香。這篇內(nèi)容想把GROUP_CONCAT()的語(yǔ)法細(xì)節(jié)、實(shí)戰(zhàn)用法和容易踩的坑一次說(shuō)清楚適合寫SQL的研發(fā)、做報(bào)表的數(shù)據(jù)分析師以及天天跟MySQL打交道的運(yùn)維同學(xué)哪怕你只是面試前突擊MySQL也能從里面撈到不少干貨。1. 項(xiàng)目概述與函數(shù)定位1.1 GROUP_CONCAT到底解決什么問(wèn)題GROUP_CONCAT()是MySQL里一個(gè)標(biāo)量聚合函數(shù)作用就是把同一個(gè)分組里的多行數(shù)據(jù)按照你指定的順序和分隔符拼成一個(gè)字符串返回。本質(zhì)上它做的就是“行轉(zhuǎn)列”中的一類場(chǎng)景多行轉(zhuǎn)一列。與之對(duì)比的普通聚合函數(shù) COUNT、SUM、AVG結(jié)果都是數(shù)值GROUP_CONCAT的結(jié)果是文本所以它在聚合后還能保留原始數(shù)據(jù)的“存在感”。舉個(gè)例子有一張學(xué)生選課表SELECT student_name, GROUP_CONCAT(course_name) FROM student_course GROUP BY student_name;這是最典型的用法把同一個(gè)學(xué)生的所有課程名拼在一行里。你沒(méi)用它之前可能先把所有記錄查出來(lái)丟給應(yīng)用層自己維護(hù)學(xué)生ID和課程列表的Map循環(huán)拼接用了它之后數(shù)據(jù)庫(kù)一次掃描、一次分組加拼接SQL寫完即是結(jié)果配合報(bào)表導(dǎo)出非常順手。GROUP_CONCAT解決的另一個(gè)核心需求是“冗余展示”。比如一個(gè)部門對(duì)應(yīng)多個(gè)員工一個(gè)分類對(duì)應(yīng)多篇文章業(yè)務(wù)詳情頁(yè)需要顯示一批關(guān)聯(lián)記錄的ID或名稱與其多查一次并額外維護(hù)緩存不如在SQL里直接拼接好。這也是許多日?qǐng)?bào)、周報(bào)里經(jīng)??吹剿碛暗脑颉?shí)際工作中我見過(guò)不少開發(fā)同學(xué)對(duì)聚合函數(shù)的理解停留在SUM、COUNT上碰到“把多個(gè)值合并成一個(gè)字段”的需求時(shí)第一反應(yīng)是在Java或PHP里拼接。不是說(shuō)應(yīng)用層拼接不行而是當(dāng)數(shù)據(jù)量上來(lái)以后一次查詢出一條主記錄、再循環(huán)查明細(xì)會(huì)產(chǎn)生 N1 查詢問(wèn)題接口響應(yīng)時(shí)間直線上升。GROUP_CONCAT讓數(shù)據(jù)庫(kù)在分組階段就把數(shù)據(jù)壓平減少了一次往返尤其在報(bào)表查詢這種“一次性拿全量”的場(chǎng)景里優(yōu)勢(shì)很明顯。1.2 函數(shù)語(yǔ)法與基本參數(shù)拆解直接看官方語(yǔ)法GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [,col_name ...]] [SEPARATOR str_val])這個(gè)語(yǔ)法看著唬人拆開其實(shí)就四個(gè)部分DISTINCT可選對(duì)拼接前的值去重。注意它去重的粒度是整個(gè)表達(dá)式不是只針對(duì)第一個(gè)列。表達(dá)式可以是一個(gè)字段也可以是字符串拼出來(lái)的列比如CONCAT(module, -, action)多個(gè)表達(dá)式之間用逗號(hào)分隔。ORDER BY可選控制拼接順序。注意這里只能在內(nèi)部排序不能像平時(shí)一樣寫ORDER BY 別名寫字段名或數(shù)字位置都可以。SEPARATOR可選分隔符默認(rèn)是英文逗號(hào)。我見過(guò)有人以為默認(rèn)是空格結(jié)果字符串糊成一團(tuán)其實(shí)默認(rèn)就是,。一個(gè)最基礎(chǔ)的實(shí)戰(zhàn)例子SELECT class_id, GROUP_CONCAT(DISTINCT student_name ORDER BY student_id DESC SEPARATOR 、) AS students FROM class_student WHERE class_id 1001 GROUP BY class_id;這個(gè)語(yǔ)句干了三件事同一個(gè)班級(jí)的學(xué)生去重、按學(xué)號(hào)倒序排列、用中文頓號(hào)拼接。別小看這些細(xì)節(jié)很多線上數(shù)據(jù)的展示效果差異都來(lái)自這里。提示GROUP_CONCAT必須配合GROUP BY使用才有“分組聚合”的意義。如果 SQL 里沒(méi)有GROUP BYMySQL 會(huì)把整張表當(dāng)成一個(gè)組處理有時(shí)候這不是你想要的結(jié)果。關(guān)于多個(gè)表達(dá)式有一個(gè)容易忽略的點(diǎn)GROUP_CONCAT(a, b)其實(shí)等價(jià)于GROUP_CONCAT(CONCAT(a, b))但兩者在語(yǔ)義上有一點(diǎn)點(diǎn)區(qū)別。直接寫多個(gè)表達(dá)式時(shí)MySQL 會(huì)先按逗號(hào)拼出一個(gè)完整字符串再用SEPARATOR連接各行的結(jié)果。如果你本身的值里就帶逗號(hào)建議用CONCAT顯式組裝避免歧義。2. 核心細(xì)節(jié)解析與實(shí)操要點(diǎn)2.1 分隔符、排序與去重三個(gè)最常用參數(shù)的坑分隔符不是隨便選的。默認(rèn)逗號(hào)有很多場(chǎng)景會(huì)出問(wèn)題比如拼接的字段本身包含逗號(hào)像地址、標(biāo)簽、帶逗號(hào)的備注結(jié)果洗數(shù)據(jù)時(shí)就尷尬了。所以我通常直接用豎線|或者中文頓號(hào)、。在報(bào)表導(dǎo)出時(shí)如果你后續(xù)要把拼接結(jié)果復(fù)制到 Excel 分列豎線比逗號(hào)更不容易撞車。還有一個(gè)隱藏知識(shí)點(diǎn)SEPARATOR后面可以跟空字符串比如SEPARATOR 常用于拼固定格式比如SELECT GROUP_CONCAT(id SEPARATOR )把編號(hào)連成一串純數(shù)字。ORDER BY 排序的坑也值得單獨(dú)說(shuō)。GROUP_CONCAT內(nèi)部的 ORDER BY 只能對(duì)參與聚合的列排序如果你想先按課程結(jié)果集已有的排序方式再把數(shù)據(jù)拼出來(lái)很可能會(huì)發(fā)現(xiàn)順序是亂的。原因是 MySQL 在聚合階段做排序跟外層的 ORDER BY 執(zhí)行時(shí)機(jī)不同。最穩(wěn)妥的寫法是把排序邏輯寫在GROUP_CONCAT內(nèi)部明確告訴數(shù)據(jù)庫(kù)“拼接時(shí)按這個(gè)順序”。其次ORDER BY 后面是可以寫多個(gè)字段的比如ORDER BY subject ASC, score DESC這在拼接成績(jī)單時(shí)很有用。我之前在做一個(gè)商品標(biāo)簽導(dǎo)出功能時(shí)業(yè)務(wù)要求標(biāo)簽按“重要程度 創(chuàng)建時(shí)間”排序。直接在GROUP_CONCAT里寫成GROUP_CONCAT(tag_name ORDER BY is_important DESC, created_at ASC SEPARATOR ,)這個(gè)寫法非常直觀而且不需要在外層排序后做二次處理。你如果只寫一個(gè)ORDER BY created_at再指望外層ORDER BY影響拼接順序基本是白費(fèi)功夫因?yàn)榫酆辖Y(jié)果集和外層結(jié)果集是兩回事。DISTINCT 去重的粒度問(wèn)題。很多人以為GROUP_CONCAT(DISTINCT name, score)是按 name 去重實(shí)際上是按(name, score)整個(gè)組合去重name 相同但 score 不同會(huì)保留兩條。如果你只想去掉重復(fù)的 name就得只寫GROUP_CONCAT(DISTINCT name)。這在統(tǒng)計(jì)用戶角色、標(biāo)簽聚合時(shí)特別容易出錯(cuò)我見過(guò)小伙伴查了兩個(gè)小時(shí)才找到原因是多寫了一個(gè)字段。2.2 長(zhǎng)度限制問(wèn)題默認(rèn)1024字符帶來(lái)的坑GROUP_CONCAT最大的隱藏殺手是長(zhǎng)度限制。MySQL 默認(rèn)的group_concat_max_len是 1024 字節(jié)也就是說(shuō)聚合出來(lái)的字符串超過(guò) 1024 字節(jié)后面的內(nèi)容會(huì)被悄悄截?cái)喽也粓?bào)錯(cuò)。它不像語(yǔ)法錯(cuò)誤那樣立刻暴露只會(huì)導(dǎo)致你看到數(shù)據(jù)不完整但是 SQL 還是顯示執(zhí)行成功這類 bug 在生產(chǎn)上排查起來(lái)很折磨人。查看當(dāng)前設(shè)置SHOW VARIABLES LIKE group_concat_max_len;修改方式有三種在會(huì)話級(jí)別臨時(shí)調(diào)大適合單次統(tǒng)計(jì)任務(wù)斷開連接即失效SET SESSION group_concat_max_len 102400;在全局配置里改影響新連接的會(huì)話SET GLOBAL group_concat_max_len 102400;寫在配置文件 my.cnf 里一勞永逸group_concat_max_len 102400這里有個(gè)計(jì)算細(xì)節(jié)1024 的單位是字節(jié)不是字符數(shù)。如果你的字段是 utf8mb4 編碼一個(gè)中文字符最多占 3~4 字節(jié)所以 1024 字節(jié)大約只能拼 300 多個(gè)中文標(biāo)簽。算容量時(shí)別只看字符個(gè)數(shù)。生產(chǎn)環(huán)境如果業(yè)務(wù)上明確要拼接大量明細(xì)直接把值調(diào)到 2048000 的也不少見代價(jià)是內(nèi)存和網(wǎng)絡(luò)傳輸增加因?yàn)槠唇咏Y(jié)果是在內(nèi)存里完成的返回給客戶端同樣要走網(wǎng)絡(luò)。我自己的經(jīng)驗(yàn)是先評(píng)估業(yè)務(wù)上最大可能的記錄數(shù)和字段長(zhǎng)度把group_concat_max_len設(shè)成兩倍冗余。千萬(wàn)別默認(rèn)用一個(gè) 1024 的配置去拼接上千條業(yè)務(wù)數(shù)據(jù)等發(fā)現(xiàn)截?cái)嗔嗽偕暇€回滾成本非常高。另外調(diào)大之后記得讓開發(fā)團(tuán)隊(duì)在同一個(gè)配置中心維護(hù)一份基線避免不同環(huán)境配置漂移。后面我會(huì)專門講一個(gè)我踩過(guò)的環(huán)境配置不一致的案例。2.3 與其他聚合函數(shù)、子查詢的配合GROUP_CONCAT不只是自己能拼還可以和表達(dá)式配合。常見的是在 ORDER BY 里使用另一個(gè)字段來(lái)控制順序在表達(dá)式中使用 CONCAT 組合多個(gè)字段SELECT user_id, GROUP_CONCAT( CONCAT(role_name, :, role_code) ORDER BY role_sort ASC SEPARATOR ; ) AS roles FROM user_role GROUP BY user_id;這一段在權(quán)限系統(tǒng)里非常實(shí)用直接把角色名稱和編碼拼成一個(gè)自解釋字符串供后端的角色標(biāo)記或者前端的工具提示使用。GROUP_CONCAT還可以放進(jìn)子查詢里比如從一張大表里取出每個(gè)用戶最新的幾條商品ID拼起來(lái)再和主表關(guān)聯(lián)。不過(guò)需要注意的是MySQL 8.0 之前派生表必須要有別名這在報(bào)錯(cuò)里比較常見——Every derived table must have its own alias。我剛開始寫這類嵌套時(shí)經(jīng)常漏別名直到被報(bào)錯(cuò)教做人。在 8.0 以后你還有更優(yōu)雅的替代方案比如JSON_ARRAYAGG()直接返回 JSON 數(shù)組以及配合窗口函數(shù)ROW_NUMBER()先取部分行再聚合。這些替代方案放到后面實(shí)戰(zhàn)部分細(xì)說(shuō)。3. 實(shí)戰(zhàn)案例與核心實(shí)現(xiàn)3.1 經(jīng)典場(chǎng)景一對(duì)多拼接實(shí)戰(zhàn)先從最常用的一對(duì)多拼接開始。假設(shè)有三張表部門表dept、員工表employee、部門員工關(guān)系表dept_employee。你要生成一張報(bào)表每一行是一個(gè)部門員工姓名按入職時(shí)間排列逗號(hào)分隔SELECT d.dept_name, GROUP_CONCAT(e.emp_name ORDER BY e.hire_date ASC SEPARATOR ,) AS emp_names FROM dept d LEFT JOIN dept_employee de ON d.id de.dept_id LEFT JOIN employee e ON de.emp_id e.id GROUP BY d.id, d.dept_name;這里有幾個(gè)細(xì)節(jié)值得圈出來(lái)GROUP BY為什么要帶上d.dept_name因?yàn)樵贠NLY_FULL_GROUP_BY模式下select 列表中的非聚合列必須出現(xiàn)在 GROUP BY 里否則會(huì)報(bào)錯(cuò)。MySQL 5.7 之后默認(rèn)開啟 ONLY_FULL_GROUP_BY很多老項(xiàng)目升級(jí)后遇到的報(bào)錯(cuò)就是這里。如果不希望寫一串 GROUP BY另一種思路是把 dept_name 也改成聚合函數(shù)比如MAX(d.dept_name)但這會(huì)掩蓋數(shù)據(jù)的邏輯我一般不推薦。如果你擔(dān)心員工過(guò)多導(dǎo)致拼接超長(zhǎng)可以先用GROUP_CONCAT內(nèi)層的表達(dá)式限制條數(shù)或者配合子查詢提前截?cái)?。不過(guò)最直接的還是設(shè)置group_concat_max_len和業(yè)務(wù)對(duì)齊前面說(shuō)過(guò)了。還有一種常見的變體只取每個(gè)部門入職最早的三個(gè)員工姓名。這時(shí)我會(huì)先開窗打行號(hào)WITH ranked AS ( SELECT d.dept_name, e.emp_name, ROW_NUMBER() OVER (PARTITION BY d.id ORDER BY e.hire_date ASC) AS rn FROM dept d LEFT JOIN dept_employee de ON d.id de.dept_id LEFT JOIN employee e ON de.emp_id e.id ) SELECT dept_name, GROUP_CONCAT(emp_name ORDER BY rn SEPARATOR ,) AS emp_names FROM ranked WHERE rn 3 GROUP BY dept_name, rn;這寫法把“取前N個(gè)”和“拼接”解耦邏輯更清晰執(zhí)行效率也比直接在大集合上做GROUP_CONCAT再截?cái)嗪靡恍?.2 進(jìn)階場(chǎng)景多表關(guān)聯(lián)與組合聚合真實(shí)業(yè)務(wù)里經(jīng)常需要同時(shí)拼接多個(gè)維度比如一個(gè)商品要同時(shí)展示“所屬分類路徑”和“標(biāo)簽集合”。這時(shí)可以在同一個(gè) SQL 里寫兩個(gè)GROUP_CONCAT一個(gè)用在分類表上一個(gè)用在標(biāo)簽表上。但如果兩個(gè)維度分別關(guān)聯(lián)同一張主表而且不是一對(duì)多關(guān)系很容易出現(xiàn)笛卡爾積導(dǎo)致重復(fù)數(shù)據(jù)。舉個(gè)例子一個(gè)商品goods同時(shí)關(guān)聯(lián)了goods_category一個(gè)商品屬于多個(gè)分類和goods_tag一個(gè)商品有多個(gè)標(biāo)簽直接兩個(gè) LEFT JOIN 后再 GROUP_CONCAT結(jié)果會(huì)膨脹分類數(shù)量和標(biāo)簽數(shù)量相乘同一個(gè)分類出現(xiàn)多次同一個(gè)標(biāo)簽也出現(xiàn)多次看起來(lái)拼接結(jié)果里全是重復(fù)項(xiàng)。這種問(wèn)題最穩(wěn)妥的辦法是先分別聚合再 JOIN 回主表SELECT g.id, gc.category_names, gt.tag_names FROM goods g LEFT JOIN ( SELECT goods_id, GROUP_CONCAT(category_name SEPARATOR /) AS category_names FROM goods_category GROUP BY goods_id ) gc ON gc.goods_id g.id LEFT JOIN ( SELECT goods_id, GROUP_CONCAT(tag_name SEPARATOR |) AS tag_names FROM goods_tag GROUP BY goods_id ) gt ON gt.goods_id g.id;這就是典型的“先聚合再關(guān)聯(lián)”思路也是我在項(xiàng)目里反復(fù)強(qiáng)調(diào)的一點(diǎn)多對(duì)多場(chǎng)景下盡量把聚合下沉到子查詢里避免多個(gè)一對(duì)多 JOIN 疊加后結(jié)果爆炸。這個(gè)坑在報(bào)表統(tǒng)計(jì)里最致命因?yàn)閿?shù)據(jù)量一大直接翻幾倍甚至幾十倍。你可以在本地用兩個(gè)小表各 3 條明細(xì)做一次實(shí)驗(yàn)兩個(gè)表 JOIN 后會(huì)有 9 行中間結(jié)果再去重拼接性能和準(zhǔn)確性都會(huì)受影響。3.3 性能調(diào)優(yōu)和替代方案GROUP_CONCAT是聚合操作它需要在分組內(nèi)進(jìn)行排序拼接如果數(shù)據(jù)量大內(nèi)存開銷和臨時(shí)表的使用都會(huì)上來(lái)。幾個(gè)調(diào)優(yōu)點(diǎn)在 GROUP BY 字段上建立索引減少分組時(shí)的臨時(shí)表開銷??刂戚敵鲩L(zhǎng)度預(yù)防大字段導(dǎo)致的排序內(nèi)存暴漲。避免GROUP_CONCAT內(nèi) DISTINCT 和 ORDER BY 對(duì)多個(gè)大字段操作DISTINCT 需要在內(nèi)存/臨時(shí)表里做去重判斷字段寬、行數(shù)多時(shí)性能會(huì)明顯下降。能用數(shù)值型標(biāo)識(shí)就不拼長(zhǎng)文本比如拼接ID而不是拼接名稱展示層再映射。從 MySQL 8.0 開始官方推薦用JSON_ARRAYAGG替代復(fù)雜場(chǎng)景下的GROUP_CONCAT它直接返回 JSON 數(shù)組沒(méi)有傳統(tǒng)意義上的長(zhǎng)度限制還能保留結(jié)構(gòu)化信息比如SELECT class_id, JSON_ARRAYAGG(student_name) AS student_array FROM class_student GROUP BY class_id;JSON 數(shù)組后續(xù)在應(yīng)用層可以很方便地 parse不需要自己再 split 字符串。但注意JSON_ARRAYAGG的排序需要配合子查詢或窗口函數(shù)因?yàn)樗旧聿恢С?ORDER BY。另外如果你的下游系統(tǒng)是 Kafka、Flink、ClickHouse 這些JSON 數(shù)組比逗號(hào)分隔更容易被解析這也是越來(lái)越多項(xiàng)目轉(zhuǎn)向 JSON 聚合函數(shù)的原因。不過(guò)字符串拼接仍然有它不可替代的場(chǎng)景比如日志里直接拼成一行、導(dǎo)出 CSV 時(shí)直接輸出文本列JSON 反而需要二次轉(zhuǎn)換。窗口函數(shù)也能實(shí)現(xiàn)類似的“行轉(zhuǎn)列壓縮”。如果你只需要每個(gè)分組的前 N 條拼接可以用 ROW_NUMBER 先打行號(hào)再在外層過(guò)濾最后 GROUP_CONCAT。這種寫法避免了一次性聚合全量數(shù)據(jù)在取“每個(gè)用戶最近三條操作記錄”這類需求里更可控。4. 常見問(wèn)題與排查技巧實(shí)錄4.1 拼接結(jié)果缺失或?yàn)榭誑ULL值的處理GROUP_CONCAT遇到 NULL 值時(shí)會(huì)直接跳過(guò)而不是拼成字符串 “NULL”。這一點(diǎn)很多從 Oracle 轉(zhuǎn)過(guò)來(lái)的同學(xué)會(huì)不習(xí)慣。比如你想把用戶的所有備注拼起來(lái)備注字段有 NULL你會(huì)得到一個(gè)干凈的列表。這通常是好事但也可能隱藏問(wèn)題如果所有值都是 NULLGROUP_CONCAT返回 NULL而不是空字符串。做報(bào)表時(shí)這個(gè)小地方容易導(dǎo)致前端顯示 null 字樣。處理辦法很簡(jiǎn)單用 IFNULL 或 COALESCE 包一層SELECT user_id, GROUP_CONCAT(IFNULL(remark, ) SEPARATOR ,) AS remarks FROM user_remark GROUP BY user_id;但注意別毫無(wú)取舍地全包 IFNULL否則空字符串也會(huì)被拼進(jìn)去連續(xù)逗號(hào)會(huì)讓結(jié)果很難看。我一般視業(yè)務(wù)決定要么過(guò)濾掉空字符串要么把所有 NULL 轉(zhuǎn)成統(tǒng)一占位符。比如你可以先過(guò)濾GROUP_CONCAT(IFNULL(NULLIF(remark, ), NULL) SEPARATOR ,)雖然看起來(lái)繁瑣但這樣空字符串和 NULL 都會(huì)被避掉結(jié)果里不會(huì)出現(xiàn)兩個(gè)連續(xù)分隔符。4.2 分組邏輯不對(duì)ONLY_FULL_GROUP_BY 帶來(lái)的報(bào)錯(cuò)5.7 以后如果 SELECT 里有非聚合字段又沒(méi)出現(xiàn)在 GROUP BY 里會(huì)直接報(bào)錯(cuò)Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ...這時(shí)候如果你用的是GROUP_CONCAT聚合其他字段而 select 的非聚合字段忘記加進(jìn) GROUP BY就會(huì)觸發(fā)這個(gè)問(wèn)題。建議改 SQL 時(shí)把非聚合字段全部寫進(jìn) GROUP BY。也可以用ANY_VALUE()包住想要保留但不想分組的字段比如ANY_VALUE(user_name)這在一些復(fù)雜業(yè)務(wù)里可以簡(jiǎn)化分組條件。不過(guò)要注意ANY_VALUE取到的是任意一行如果你不能接受不確定性就不要這么做。我在實(shí)際操作中更推薦把所有非聚合列都寫進(jìn) GROUP BY原因有兩個(gè)一是語(yǔ)義清晰日后維護(hù)的人能一眼看懂分組粒度二是兼容性更好換到其他數(shù)據(jù)庫(kù)或者遷移到 TiDB、PostgreSQL 時(shí)寫法差異更小。ANY_VALUE是 MySQL 自己的妥協(xié)方案能用但別濫用。4.3 生產(chǎn)環(huán)境踩坑拼接超長(zhǎng)、內(nèi)存不足和字符集問(wèn)題我在生產(chǎn)環(huán)境遇到最折騰的一次是查詢報(bào)表時(shí)發(fā)現(xiàn)GROUP_CONCAT的結(jié)果在部分機(jī)器上短一截另一部分機(jī)器正常。排查到最后發(fā)現(xiàn)兩個(gè)環(huán)境group_concat_max_len配置不一致導(dǎo)致同一份 SQL 在不同環(huán)境表現(xiàn)不同。這是典型的“開發(fā)環(huán)境沒(méi)壓到長(zhǎng)度閾值生產(chǎn)環(huán)境數(shù)據(jù)量大直接踩線”的案例。所以在代碼評(píng)審時(shí)只要看到GROUP_CONCAT我會(huì)順手問(wèn)一句拼接上限評(píng)估過(guò)沒(méi)有配置調(diào)了沒(méi)有還有一個(gè)隱蔽問(wèn)題是字符集。如果GROUP_CONCAT內(nèi)部拼接的字段來(lái)自不同的表而兩表的字符集或排序規(guī)則不一致可能報(bào)Illegal mix of collations錯(cuò)誤。解決辦法是拼接前用 CONVERT 統(tǒng)一字符集比如CONVERT(col USING utf8mb4)。這類問(wèn)題在從舊庫(kù)遷移、或者多庫(kù) JOIN 時(shí)更容易出現(xiàn)。內(nèi)存方面超大的group_concat_max_len設(shè)置會(huì)讓每個(gè)涉及GROUP_CONCAT的查詢占用的內(nèi)存隨之上升。不是查詢里寫了GROUP_CONCAT就會(huì)立刻爆內(nèi)存但高并發(fā)場(chǎng)景下幾十個(gè)線程同時(shí)拼接大字符串?dāng)?shù)據(jù)庫(kù)內(nèi)存會(huì)明顯上漲。因此在調(diào)大配置時(shí)一定要考慮連接數(shù)和并發(fā)度別只盯著單一查詢。4.4 常見問(wèn)題速查表現(xiàn)象可能原因解決辦法拼接結(jié)果被截?cái)鄃roup_concat_max_len 太小調(diào)大會(huì)話/全局/配置文件參數(shù)拼接后順序混亂外層 ORDER BY 與內(nèi)部排序沖突在 GROUP_CONCAT 內(nèi)部寫 ORDER BY結(jié)果里出現(xiàn)重復(fù)值未加 DISTINCT 或去重粒度錯(cuò)明確 DISTINCT 的表達(dá)式范圍結(jié)果顯示 NULL所有參與拼接的值都是 NULLIFNULL/COALESCE 處理或過(guò)濾空值報(bào)錯(cuò) ONLY_FULL_GROUP_BYselect 非聚合列未出現(xiàn)在 GROUP BY補(bǔ)全 GROUP BY 或使用 ANY_VALUE報(bào)錯(cuò) Illegal mix of collations多表字段字符集/排序規(guī)則不一致用 CONVERT 統(tǒng)一字符集拼接結(jié)果超大響應(yīng)慢輸出字節(jié)大、內(nèi)存排序消耗高控制字段寬度、索引優(yōu)化、考慮 JSON_ARRAYAGG這張表是我自己排查問(wèn)題時(shí)常用的框架每次遇到類似報(bào)錯(cuò)先定位現(xiàn)象再套原因效率會(huì)高很多。5. 面試題視角與擴(kuò)展思考5.1 面試官問(wèn) GROUP_CONCAT 想考什么MySQL 面試題里GROUP_CONCAT屬于容易被輕視的知識(shí)點(diǎn)。面試官如果讓你寫“查出每個(gè)部門員工姓名拼接在一起”的 SQL表面上考的是語(yǔ)法實(shí)際想確認(rèn)你對(duì)聚合函數(shù)的邊界條件有沒(méi)有清醒認(rèn)識(shí)。我見過(guò)不少候選人能寫出基礎(chǔ) SQL但一問(wèn)出下面這幾個(gè)問(wèn)題就露餡拼接結(jié)果默認(rèn)最長(zhǎng)多少截?cái)鄷?huì)不會(huì)報(bào)錯(cuò)DISTINCT 去重的單位是什么內(nèi)部 ORDER BY 能寫成什么形式能不能嵌套子查詢多個(gè)一對(duì)多 JOIN 時(shí)拼接為什么會(huì)出現(xiàn)重復(fù)這些問(wèn)題背后其實(shí)考察的是你踩過(guò)多少坑。我自己在面試時(shí)也喜歡用GROUP_CONCAT當(dāng)引子從基礎(chǔ)語(yǔ)法往深度場(chǎng)景帶判斷候選人數(shù)據(jù)庫(kù)動(dòng)手能力到底到什么級(jí)別。很多候選人背了一堆高并發(fā)、索引優(yōu)化概念結(jié)果連“CLOB拼接限制”這種實(shí)戰(zhàn)問(wèn)題都答不清說(shuō)明平時(shí)寫SQL還是太依賴復(fù)制粘貼。5.2 替代方案的正確選型前文提到了JSON_ARRAYAGG和窗口函數(shù)這里集中對(duì)比一下方案輸出排序支持長(zhǎng)度限制適合場(chǎng)景GROUP_CONCAT分隔符字符串支持內(nèi)部 ORDER BY受 group_concat_max_len 限制簡(jiǎn)單展示、CSV/日志輸出JSON_ARRAYAGGJSON 數(shù)組需搭配窗口函數(shù)/子查詢無(wú)傳統(tǒng)長(zhǎng)度限制前端直接解析、下游結(jié)構(gòu)化消費(fèi)子查詢 GROUP_CONCAT分隔符字符串分組內(nèi)先排序再聚合同上復(fù)雜條件限制后的拼接窗口函數(shù) 條件聚合多列/多行窗口內(nèi)排序無(wú)需要保留多列統(tǒng)計(jì)值時(shí)選型核心看數(shù)據(jù)消費(fèi)方。如果只是給人看的GROUP_CONCAT最直接如果給程序消費(fèi)JSON 更穩(wěn)如果數(shù)據(jù)量超大且要對(duì)拼接結(jié)果再做統(tǒng)計(jì)建議直接在聚合前用窗口函數(shù)把數(shù)據(jù)量壓下來(lái)不要把所有明細(xì)都拼出來(lái)再截?cái)?。我在?shí)際項(xiàng)目中還遇到過(guò)用GROUP_CONCAT給一批 ID 拼成一個(gè)字符串再配合FIND_IN_SET做條件判斷的寫法。這招在數(shù)據(jù)量不大時(shí)非常方便但數(shù)據(jù)量一大性能就很差因?yàn)樗貌坏剿饕8扑]的做法是把字符串拆開 JOIN 回原表查詢或用臨時(shí)表。你要記住一條原則GROUP_CONCAT的目的是“展示”不是“作為查詢條件去關(guān)聯(lián)”一旦把它當(dāng)中間表用坑就來(lái)了。個(gè)人實(shí)際使用下來(lái)GROUP_CONCAT最舒服的場(chǎng)景是監(jiān)控告警、日?qǐng)?bào)導(dǎo)出和目標(biāo)字段快速透視。我最后還會(huì)分享一個(gè)小技巧如果你需要把拼接后的結(jié)果再次拆分并按條件統(tǒng)計(jì)MySQL 8.0 可以用JSON_TABLE()配合拆分 JSON 數(shù)組但如果你用的是 5.7就老老實(shí)實(shí)把原始明細(xì)表梳理清楚盡量不要依賴字符串的二次切割。數(shù)據(jù)結(jié)構(gòu)的規(guī)范性永遠(yuǎn)比函數(shù)技巧更重要這一點(diǎn)在GROUP_CONCAT上體現(xiàn)得特別明顯。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
日本天天色| 揉揉日日日日| 久久超碰爱| 人人 操人人 操人人| 91天天c| 五月丁香六月激情综合| 草草影院最新网址| AV中亚| 久久99999| 精品久久久久,69国产成人精| 在线观看av区| 蜜臀操逼黄色视频操的好爽| 中文字幕五月婷婷免费| 国产精品com| 2024年最新色情网站在线观看| 亚洲国产亚洲天堂| 欧美久久人妻少妇一区二区| 欧美猛交黑寡妇中文字幕| 日韩人妻精品久久久久| 禁止观看美女黄| 天天色播亚洲综合网站| 在线岛| 色黄污美女啪啪啪免费网站| 国产成人拍国产亚洲精品| 成人性交午夜免费片| 伊人991| 国产精品小视频一区二区三区| 九九无码视频| 婷婷99| 五月天婷婷色色| 久久婷婷综合国际产色怕| 国产大陆天天艹| 摸奶性爱视频网站在线免费播放| 狠狠操狠狠操操| 高清无码人妻久久久一区二区三区aⅴ| 999久久芭蕾| 天天日美女的B| 九九亚洲精品| 成人片视频| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 国产馆极品诱惑| 性做久久久久久免费观看软件| 免费观看性欧美一级| 最新亚洲黄色免费电影| 超碰精品国产无码| 国产h片在线观看视频| 国产一区二区成人av在线播放| 国产偷拍网站| 久久亚洲欧美中文字幕国语| 中文一区在线视频| 熟妇最新先锋一二三区| 超碰在线97国产| 九九九九精品一区| 久久久久久九九九| 精品无码久久| 99av| 国产精品免费日韩| 狠日操| 国产区性爱在线视频秋霞豆| 免费AV播放| 久久天天性久久伊人| 免费看污网址| 久午视频| 操高情无码| 成人黑料社久久| 亚洲美女精品| 91精品久久综合熟女| 国产AV久久久蜜爱影集| 国产精品青青草| 欧美高潮在线| 91宗合网| 一,爱啪啪,在线免费视频| 色婷婷基地| 色999偷自拍拍| 超碰97综合网| 777AV电影| 日韩成人精品中文字幕| 91激情国产| 亚洲日韩国产精品| 思思热免费视频观看| 91久青| 日本亚欧爱爱| 超碰精品国产无码| 国产天天骚| 夜夜无码| 国产成人手机视频激情| 中文乱码99| 麻豆区久久久久亚| 亚洲一区二区三区欧美日韩| 欧美日韩天堂| 18啪啪手机免费性爱| 成人av免费观看| 欧美成人一区二区| 人人操我人人干| 夜夜春夜夜操| 亚洲第一精品在线视频| 中文一区二区婷婷视频| 99色热| 人人操人人搞人人草| 最新欧美色网| 97美日韩视频| 青草视频在线看看看看看看看看看| 久久久久久中文版| 少妇综合| 偷窥自拍亚洲色图| 午夜男女爽爽大片免费观看| 天天干美少妇一区| 四虎av在线| 黄片色区软件| 嫩草影院永久在线制服丝袜| 久久超碰国产一区二区三区| 双插在线| 日逼逼免费看| 老女人老91妇女老热女| 精品中文字幕第一页| 美女啊啊啊啊啊啊啊| 欧美色图另类图片| 欧美熟妇精品黑人巨大一二三区| 欧美夜夜| 亚洲色图a| 欧美日韩*字幕一区| 91在线美女| 中文字幕一二三| 97av在线视频| 久久综合97| 99色综合| 免费人成毛片乱码| 丝袜色综合| www.av在线观看| 丰满熟妇大乳做爰| www99热| 五月丁香在线| 中文字幕精品探花视频| 国产视频小说| 日本污ww视频网站| 精品亚洲天堂| 免看60秒涩涩视频| 日韩女优在线| 日韩在线一区二区| 日韩无限资源| 亚洲区限制级| 成人婷婷丁香| 国产操伦| 中文字幕乱妇免费视频| 午夜天堂网| www.久久最新地址| 无码人妻精品一区二区三区99不卡| 超碰午夜在线| 极品美女福利在线观看| 日韩精品午夜操呦呦不卡影院| av天堂影视中文在字幕在线中文| 国产三级在线现体验区| 国产欧美另类久久久精品课程| 欧美后进式| 日本人妻丰满熟妇久久久久久| 激情欧美日韩女同久久| **一级毛片国产| 97干在线| 999热日韩精品| 日韩一级二级在线| 精品国产www久久| 少妇久久久久久久| 少妇熟女视频一区二区三区| 一区二区首页| 激情五月激情综合网| 免费观看性欧美一级| 超碰在线成人电影| 欧美老妇综合网| 国产视频一区二区免费| 自拍偷拍 日韩欧美| 果冻传媒一区二区三区| 蜜桃在线观看一区二区三区| 婷婷五月天成人| 人人妻人射| 欧美翘臀视频网站一区二区三区| 超碰69| 五月天春色激情网| 四虎永久在线精品免费网址| 日韩乱插| 无码逼| 人人操人人舒服| 78m成人视线| 天天操天天看| 91处女视频在线观看| 伊人成人中文字幕久久网| 天天干干天天干干| 国产亚洲性生活视频播放| 99热这里都是精品| 男人的天堂三级| 国产 大胆 对白| 日韩伦理久 久久 清纯| 日韩97视频!在线| 色丁香五月婷婷| 91精品伊人久久久大香线蕉91| 天天干天天舔| 日本色色视频网站| 20cm女自慰在线日韩欧美| 9I1性色影院| 欧美玖玖爱免费玖玖| 日夜久久久九九九久| 婷婷成人久久久精品| 欧美亚洲中文字幕| 精品人人插人人操| 中文字幕在线日亚洲9| 大香蕉免费乱伦视频| 日本成人电影资源网| 天天躁日日躁xxxxx| 久久av一级av少妇av高潮| 飘花国产午夜精品不卡| 91香蕉视频在线观看免费| WWW.操逼.COM| 亚洲国产ⅴ高清在线观看| 欧美熟妇成人一区二区| 久草视频观看视频在线| 婷色五月| 色av中文字幕| 熟女91网| 曰韩人妻中文字幕在线| 久久久九九网站| 亚洲夜夜欢无码一区二区| 久草大| 丁香五月色情| 日韩AV一区二区三区三州三州| 尤物av网站| 亚洲 中文 女同| 99久久综合| 成人久久久精品| 久久久天堂| 成年人黄色| 麻豆国产精品午夜视频| 一区二区影院| 国产欧美日韩女同性恋ww喷水精品| 狼天天狼天天大香蕉| 超碰97在线 欧美 国产| ai欧美亚洲小说| 欧美日韩精品久久久久东北老熟妇| avav青青草久久夜| 97精品一区二区视频| 在线看的av| 2024人人操人人摸| 97人人爱人人做人人乐| 精品美女少妇一区二区| 国产日韩精品suv| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 人妻在线臀日韩| 综合一区二区影视| 日本操逼无码| 熟妇操花| 伦在线97| 国产成人超碰在线| 日韩久久三区| 91精品又粗又猛又爽| 火箭成精品视频884必出精品| 欧美巨大性舒爽顶到了| WWW黄片COM| 天天干2区3区| 久久女人| 亚洲午夜福利视频| 亚洲91网。| 欧美97av| 333kkkk·亚洲com久久| 午夜欧美J进J出白浆流出久久久| 亚欧美综合网| 日韩成人免费电影| 欧美偷偷网| 高清国产无码av| 91oumei| 欧美综合传媒| 成年人黄色小视频网站| 国产四虎在线| 丁香九月婷婷| 久久色情| 亚洲欧美91√| 日韩一级特黄av毛片| 欧美中文字幕男人天堂久久精品| 天天天干977| 综合欧美日本三级| 国产乱不卡| 激情网色| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 国产成人无码网站在线视频| 青青草无码视频| 免费国产电影一区二区| 99啪啪视频| …亚洲黄色厕厕女女在线播…| 伊人久操| 日日嗷| 色哟哟511老熟女| 午夜精品久久久久| 国产精品婬乱一级毛片彝族| 黑人精品久久97| 免费一级精品啪啪视频| 2000亚洲男人天堂| 人人人人插| 97天天在线| 日本一区二区不卡精品| 亚洲精品熟妇1区2区3区。| 亚洲欧洲日韩国产自在线| 色在线69堂| 性爱Av免费| 中文字幕乱偷人妻久久艾草网| ..日韩av毛片精品久久久| 一二三四视频在线社区中文字幕| 秋霞免费AV| 国产丝袜高跟美女av免费观看| 日本丝袜人妻内射| 久久精品操| 91neishe| 天天干人人干天天日97| 一区二区无码视频| 欧美视频第二页| 欧美黑人精品在线播放| 欧美日韩妖精91com| 99热精品在线| 亚洲精品成人动漫在线| 情色五月天就去干| 日韩偷拍色图| 国产大学生口爆吞精合集| 另类专区加勒比| 亚洲AV成人无码一区二区三区在线观看| 国产伊人精品在线| 欲色影视综合吧| 精品性爱一二三区| 人人操,人人液| 欧美暴力猛交| 亚洲综合色男人网| 国产色呦呦| 四虎影视在线| 爱av免费| 巨爆乳一区二区爆乳区| 久久久男人的天堂| 欧洲黄色网| 欧美 亚洲 综合 制服 另类| 国产超碰人人操| 成人羞羞视频国产| 99色在线| 九热大香蕉| 青青操轻轻| 久久久久久久精| SUV一区二区在线看| 人人扣人人操| 小日子操bb在线看| 久久精品一区二区| www.成人无码| 欧美少妇性乱| 97色视频在线| 久久人妻办公室视频| 岛国在线免费视频| 蜜臀久久99精品久久久电影| 人妻熟妇一区二区三区| 9久精品视频在线观看| 国产欧美伊人| 97色碰| 日韩AV无码中文一区二区| 亚洲欧美另类小说| 久久精品噜噜噜成人看免欧美大片| 久久久噜噜噜久久久| 色爱三区| 欧美老妇曰批的视频| 国产毛片片精品天天看视频| 久久大香蕉97| 91美女国产在线| 99操| 白丝AV网站| 91精品电影18| 激情一区二区三区在线观看| 9色在线| 蜜乳AV一区二区三区四| 青娱乐欧美激情一区二区| 91网站18| 免费?级毛片无码?∨蜜芽试看| 99夜夜操| 中文字幕三四五区| 欧美+日产+中文| 9久9久9久9久视频网站| 久草线上视频免费看| 欧美日本天堂| 干B| 啊操爽品善一区二区三区| 四虎影视在线| 欧美熟妇精品黑人巨大一二三区| 精品久久在线区一区| 九九九九久久久| 国产亚洲在线| 天天综合91在线| 大香蕉手机视频| 97人人射| 日韩AV一区二区三区四四| 婷婷激情四射| 欧美精品另类人妖xxxx| 国产在线不卡导航| 蜜臀人妻少妇久久在线观看| 天天弄欧美| 影音综合网| 1二区9| 欧美日韩亚洲电影| av草草在线电影| 91人妻尻屄视频| 久久高清欧美国产| 色情成人五月天| 99性爱| 精品大久久| 亚洲综合图文| 91网站18+| 大香蕉手机在线| 人妻娇喘 激情视频| 久草看看看| 天天躁日日躁狠狠躁| 日本中文熟女视频| 亚洲系列第一页| av资源在线观看少妇| 蜜桃久久一区二区三区| 五月天综合网| 亚洲成人AB| 亚洲伊人成综合成人网| 国产日产精品久久快鸭的功能介绍| 午夜120视频在线观看| 免费啪啪啪网站18岁| 日日日日日| 99青青草国产视频| 青青草大香蕉视频| 狠狠中文字幕| 国产按摩一区二区三区| 久久同城AV| 97精品在线视频| 福利操逼| 97超碰美国| 9ⅰ久久久天天| 日本506070| 亚洲少妇综合在线播放| 亚洲日韩肥臀视频在线观看| 天欧美在线| 国产91影院| 色综合久| 国产日韩欧美| 亚洲欧美高清无码| 91狠狠色丁香婷婷综合久久精品| 一区二区不卡| 一二三区操逼国产91| 手机看av网站在线看| av大香蕉网站| 综合另类| 欧美图片偷拍| 天天碰久久入| 中国国国产一级特黄毛片| 久久99国产综合精品女同| 中文字幕无码不卡啪啪| 亚洲国产尤物yw在线观看| 欧美九9 9 9| 超碰偷拍| 久久一区二区三区入口| 日本孕妇孕交| h4610国产人妻| 91夜夜蜜桃臀1区2区3区| 91美女网站| 一起草av| 日韩猛交| 日韩人体偷拍| 日韩兔费看黄片| 九九色色| 日韩欧美性吧婷婷乱伦大香蕉| 久久九九网| av凤凰久久久| 综合情欲网| 亚洲成人无码影院| 日韩一级二级三级免费看完整版国语版 | 99热导航| 国产高清吃奶免费视频网站| 午夜呻吟欧美| 欧美中文字幕日韩在线| 国产乱弄免费在线视频。 | 欧美中文字幕男人天堂久久精品| 欧美色偷偷| 日韩偷拍色图| 丁香婷婷五月| 日本九九久久99| av网页一区二区三区| 91激情综合| 视频分类 国内精品| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 99久久国产精品免费高潮| 人妻天天操天天爽视频免费| 黄色无码高清黄色无码网站| 色九月综合| 啪啪啪东京| 人妻丝袜肏逼| 丁香五月婷婷色| 亚洲情色视频| 欧美熟女激情| 国产区性爱在线视频秋霞豆| 超碰导航97| 蜜桃色色网站视频三区| 超碰色男人操熟女| 素人伊尹大香蕉免费下载视频| 成人片在线播放| 天天综合亚洲综合| 成人精品欧洲亚洲| www.狠狠操| 成人性爱AV在线免费观看| 91影视亚洲| 防屏蔽在线视频| 久久久国产av美女私房| 91麻豆天美国产欧美高潮| 花野真衣| 日本www操操操| 粉嫩av一区二区三区天美传媒| 九九热精品在线| 国产精品视频麻豆入口| 日逼97| 另类 综合 日韩 欧美 亚洲| 九九色精品| 国产美女自拍AV| 性欧美999| 欧美成人综合| 99re6国产精品99re在线| 乱伦av麻豆| 国产精品久久久| 人妻无码一区二区三区久久99| 思思99热| av天堂5| 日韩有码 一区二区三区| 亚洲熟妇白浆无码AV| 免费看污网站| 婷婷亚洲天堂| 精品伊人久久久大香线蕉小说| 亚洲av成人精品一区| 欧美淫乱视频| 神马影院午夜福利久久久| 熟妇熟女视频一区二区三区| 亚洲欧美国产成人综合不卡| 欧美日韩另类在线| 欧美极品美女aaaaaa级黄片| 欧美性夜| 最新制服中文第一页| 黑人干亚洲| ji熟女.com| 亚洲一二三四区| 欧美色91| nuu12国产麻豆精品| 玖玖爱一区在线| 久久综合乱子伦国产免费| 色99在线| 中文字幕成人| 91九色精品熟女内射| 激情干在线| 一级特级aaaa毛片免费观看| 天天草夜夜草高潮片| 91av熟女人妻| AV一起草在线| 人人爱人人乐人人操| 日韩欧美加勒比| 超碰97护士| 97精| 搡老女人911熟妇老熟女| 午夜精品久久99蜜桃的功能章节 | 五月丁香成人网| 女人高潮大叫一级毛片| 爱媛媛久久国产福利| 天天精品| 久久国产视频性吧| 插入综合网| 污到发麻的视频 国产| 99热这里只有精| 日本九九久久99播| 大香蕉伊在线久草麻豆天堂故事| 欧美72网页| 久久99草| 精品十八在线观看| 亚洲色图欧美激情| 天天夜躁日日躁狠狠2002| 婷婷av在线中文字幕| 手机午夜电影神马久久| 综合 欧美 亚洲 日本| 婷婷视频在线免费观看| 99综合视频一体| 欧美日不卡| 色鬼在线综合| 亚洲综合 欧美| 欧美综合色图片| 欧美牲| 乱伦a片视频| 日韩性爱高清免费视频| 玖色AV| 91国产大片| 久欲AV| 九九九九精品九九九九| 日韩国产不卡在线视频| 国产农村一一级特黄毛片| 少妇 综合| 欧美亚洲se91| 亚洲综合伊人无码久久| 狠狠色噜噜狠狠狠狠2018| 亚洲暴力强奸AV| 亚洲熟妇自偷自拍另欧美| 91中文精品日韩欧美在线| 日韩精品一区,二区 九九...老司机| 日韩精品亚洲一二三| 亚洲视频中文一区| 强奸乱亚洲| n1038 一二三区| 欧美色图片欧美色图| 精品午夜福利导航| 欧美性爱在线无码| 欧美精品双插| 国产97在线 | 亚洲| 艹精品| A V少妇特黄三级| 天天躁狠狠躁av| 免费岛国一级片| 免费视频a级毛片免费视频| 青青草吊丝| 国产精品乱码久久久久久久久| 翔田千里无码中出中文字幕| 人妻天堂综合网| 制服丝袜第二页| 国产精品分类在线观看| 亚洲成人av色网| 天堂精品| 欧美强奸乱能| 狠综合网| 国产一区二区三区高清视频| 91久久婷婷| 国产不卡的视频| 精品国产一区二区三区四区在线看| 欧美激情综合色综合啪啪五月| 国内97干免费看| 免费看片黄| 久久久亚洲精品电影免费看| 久久αⅴ| 丁香五月AV| 中文字幕欧美精品亚洲日韩蜜臀| 色官网色综合| 久啪| 国模不卡| 自拍亚洲综合| 啪啪AV导航| 超碰夫妻97| 久久受www免费人成| 91亚洲不卡一区| 日本精品五区| 亚洲天天艹| 国产又黄又爽| 91新在线欧美| 一本色道综合久久欧美| 色诱中文字幕| 亚洲日本激情| 91AV天美在线视频| 无码在线亚洲| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 欧美躁死她一区二区| 日本韩国五十路六十路七十路老熟女作爱视频网站 | 97干日韩| 亚洲欧洲av影音| 久久久久久久少妇| 久久欲| 天天色怡春院| 黄aaaaaaaaaaaaaaaaaa色网站 | 99自拍视频| 日本 欧美 亚中文字幕| 色噜噜狠狠色综无码久久合欧美| 97天天爽| 人人 操人人 操人人| 99精品高潮| 天天躁日日躁AAA片李宗瑞| julia国产在线| 91爱综合| 国产女人高潮嗷嗷嗷叫小说 | 精品人妻免费观看| 金典av| av国产无码| 在线综合网| 亚洲精品国产av天美传媒| 91动漫操逼视频| 91熟女丨老女人| 欧美少妇第一页| 国产白嫩漂亮KTV在线| 78精品在线| 91殴美大片| 91天堂色男人的天堂| 1240青青草一区二区三区视频天爱| 日韩女优中文字幕| 婷婷午夜成人色中色| 日韩精品午夜操呦呦不卡影院| 久热69九色熟妇97| 青娱乐亚洲自拍| 97网色| 牛牛久久国产精品视频一二三| 中文自拍欧美影视| 84YTCOM性无码| 黑人干亚洲| 九九久久久久久爱| 伊人女女资源在线观看| 久久男人的天堂| 精彩久久中文| 日韩二级| 91狠狠综合久久久久久| 天天综合网日韩7799| 一本久道久久综合狠狠爱一密臀精| 18岁禁 茉莉成人久久| 天天插天天操| 亚洲国产精品9999在线观看| 亚洲欧美日韩不卡人妻| 免费97视频| 黄色成品网站| 五月综合视频| 果冻国产精品麻豆成人av| 亚洲中文字幕在线视频一区二区| 九九热午夜欧亚国产视频| 日少妇亚洲版| 久久久人妻| 少好三P| 大香蕉一人在线| 综合色图区| 色官网在线| 国产免a费看黄片在线| 精品欧美老熟女一二区| 日本媚薬中文字幕在线| 色哟哟AV| 日日干夜夜欢| 麻豆精品三区视频| 99re只有精品| 亚洲中文字幕乱码无码一区二区| 婷婷久久综合| 婷婷综合久久| 亚洲国产日韩欧美熟妇在线| 亚洲国产一级精品毛一级精品看免费视频 | 免费一级精品啪啪视频| 夜草网站| 91精品国产91久久福利| 97超碰久久| 啊啊啊啊网站| 九九九精品| 久久久久亚洲Av无码专区老牛影视| 欧美性高潮在线| julia国产在线 | 男女猛烈无遮掩视频免费软件| 精精品人妻一区二区三区| 亚洲一区中文字幕| 亚洲图片91| 欧美色图综合网| 亚洲黑人在线| 狠狠婷婷亚洲中文综合久久| 蜜臀一区二区三区在线| 色欲天天综合久久久无码网中文| 97天天综合| 国产精品高潮久久久无码| 亚洲色图综合| 欧美18 在线观看| 无码人妻精品一区二区中文| 久久成人午夜精品影院| 自拍大香蕉乱插| 亚洲欧洲综合视频在线| 精品久久視頻在线| 久久99国产综合精品女同| 蜜桃精久三区| 很很很很操| 久久精品操| 国产99999| AVE乱伦| 家庭乱伦性爱av| 久草大| 日韩美女久久一区二区三区| 亚洲五区熟女| 久久人妻一区二区三区高清| 欧美偷拍| 无码精品久久| 日韩成人大片在线观看| 日韩在线76| 亚洲天堂情色| 欧美精品系列| AA级电影三区| 日本午夜精品理论片A级APP发布| 一本道综合色图| 插老姨肥穴| 婷婷激情丁香| 欧美一区二区日韩三区| 欧美成va视频网站| 久久久久久久久久久久久久久乱码| 韩日巨乳美女免费视频在线观看| 亚洲中文sv| 国产亚洲欧美每日在线| av在线资源| 秋霞一区二区三区四区五区六区七区| 中文字幕av片| 视频国产成人精品日本亚洲18| 在线观看色视频| 久热久一区二区三区| 嗯嗯啊啊的视频| WWW.操逼.COM| 久热9| 国产性爱欧美性爱在线| 91人妻在线视频| 26uuu国产成人综合| 1024久久高清视频| 欧美精品亚洲精品日韩传电影| 搡老女人老91妇女老熟女| 精品一区二区人妖| 少妇天堂网络| 亚洲在线a| 亚洲免费人妻在| 亚州中文字幕超碰97| 天天做天天爱| a在线视频免费观看| 亚洲综合图色在线| 五月婷亚洲精品天堂| 国产女人成人精品视频| 欧美亚洲美少妇一区二区| 屁股久久久久久| 亚洲色欲天天人妻无码系列专区| 极品后入免费视频| a片 xxxx受爽视频| 日本 欧美 亚中文字幕| 国产视频97| 天天做日日做天天欢。| 自拍视频大全亚洲专媒视频/一区二区三区 | 亚洲高清在线se| 亚洲国产ⅴ高清在线观看| 欧美老熟另类| 91亚洲色图| 少妇二级| 久久久久久久久久9| 免费看日本操逼视频| 超碰碰小说97| 精品性爱一区二区| 亚洲青青草| 强奸乱伦麻豆| 91欧美巨乳| 网页导航五月天免费一二三区 | 抽插无码高清一区| 在线电影亚洲色图| av凤凰久久久| 99色热| 色综合色| 91爱网| 99re6国产精品99re在线| 91精片| 欧美亚综合色图| 午夜福利国产欧美日韩夜夜| 黄色小说亚洲| 九九综合久久中文字幕| 久久久专区| 韩国三级理论在线| 就去色综合| 久久久98网站免费视频| 免费成人自拍视频在线| 性色中出| 欧美日韩性爱无码| 91天天综合在线观看| 欧美色婷婷| 欧美色999| 亚洲精品国产精品乱码不卡| 精品偷拍13p欧美dodk视频| 乱色老一区二区三区的观看方式| 大屁股xxxxx| 综合97| 无码视频一区二区| 国产树林里野战在线看| 欧美熟妇精品黑人巨大91| 亚洲 欧美 中文 日韩超碰| 日本潮催一卡操| 亚洲综合 欧美| 青青草中文-久久青草精品一区二区三| 亚洲一区二区麻豆影院| 网站A V在线| 色综合国产在线观看| 亚洲AV无码黄色强奸| 老鸭窝日丰县女人| 日韩熟妇二区| 国产91影院| av东京热男人的天堂| 久久草在线综合视频| 久久久久久性爱免费视频| 日韩紧密久久| 一区二区三区免费岛国片| 男人的天堂99| 美骚妇av高清在线| 伊人五月天| 亚洲人妻中文在线视频| 婷婷激情五月综合| 国产suv精品一区二区四区999 | 加勒比人妻综合| 亚洲色综合| 91精品久久久久五月天精品| 一本色道久久综合狠狠操| 91女网站| 巨爆乳肉感一区二区三区竹菊影视| 九九九九精品九九九九| AV色五月天| 日本天堂网| 久久婷婷精品| 欧美经典一区二区三区| 大香蕉中文| 国产精品69久久久久久久| 春色校园综合网| 97av在线视频| 伊人激情五月天一区二区| 97天天综合| 亚洲操操操无码| 超碰538| 另类综合另类| 99精品久久久久久久婷婷蜜桃| 爱妃国产亚洲视频中文字幕| 国语精品av| 五十路人妻在线| 国产乱弄免费在线视频。| 激情五月婷婷| 国模吧 一区二区三区| 国产对白刺激视频| 家庭乱伦麻豆| 国产剧情在线| 久久高潮妇女视频| 激情婷婷黑人91| 人妻无码一区二区三区久久99| 极品内射| 熟女色图在线| 日韩一区二区熟女| 爱爱动态120秒| 色色色综合| 九九热最新| 婷婷丁香熟妇综合网| a v网站在线播放| 人人操人人插人人摸人人干| 男女猛烈无遮掩视频免费软件| 色综91| 精品欧美乱码久| 成人一二三区| 精品人妻少妇| 人妻精品一区二区三区| 久久99久久99精品天美传媒棢·纸:. | 精品无码一区二区人妻久久蜜桃| 亚洲永久永久永久永久一级一级一级精品| 91熟女熟妇视频网站| 日本天天色| 欧美亚洲丝袜人妻制服99| 99超级碰免费视频| 桃色五月天| 夂久色| 日韩无码嘿咻黑热久| 97久久精品亚洲| 欧美精品成人亚洲| 成年男人的天堂| 精品久久久久黄少妇| 无码人妻丰满熟妇奶水区毛片| julia在线观看久久| 久久e6只有精品| 自拍视频大全亚洲专媒视频/一区二区三区 | 色www精品视频在线观看| 亚洲91网站| 狠狠操狠狠燥| 91色亚洲| 女性喷水高潮在线观看| 无码精品久久| 中文字幕一区二区韩| JIZZJIZZ国产精品喷水| 色婷婷综合视频| 美女黄色一级A视频| 九九久久一区二区三区| 久久中出在线| 免费99精品国产自在在线| 亚洲欧洲日韩中文字幕一区| 日韩小电影| 亚洲精品成人动漫在线| 午夜偷拍久久熟女| 成人片在线播放| 国产日本熟女顶级一区二区三区视频| 嗯嗯啊啊用力视频免费| 熟妇高潮精品一区二区三区下载| 乱色老一区二区三区的观看方式| 自拍六区| 2017人人操,人人摸| 黄色av一区二区在线| 久久久蜜桃一区二区三区| 美女91在线观看| 日韩欧美久久婷婷网站| 亚洲成a人v欧美综合天堂下载| 黄色片,com| 久久97| 夜夜久久| 欧美性爱超碰97| 久久久久久亚洲Av无码| 免费久久精品麻豆一区二区av| 国产精品一区二区在钱播放| 亚洲999综合| 日韩欧美日韩| 午夜欧美女人操逼| JULIA人妻风俗店中出电影| 玖玖爱综合网| 97无码视频在线播放| 8050午夜少妇无码| 综合干干干av久久久综合网| 久9久9久9久9久9久9| 日韩性爱一级片| 九九久久精品| 超碰97在线中文| 欧美成人一级麻豆| 簧片免费看视频| 欧美日本天堂| 亚洲色图欧美一区二区不卡| 国产呦精品一区二区三区下载| 亚洲一二三四区机械| 人妻熟女一区二区三区视频| 国产特级毛片AAAAAA高潮流水| 久久一二三四五六七八九区区区 | 天天天操天天天爱| 亚洲āv网址在线观看| 久久激情五月| 国产99999久久精品| 91色人妻| 婷婷三区| 久久 精品| 色色色999| 欧美综合色综合| 色网在线视频观看免费| 殴美日韩m| 女性91网站| 男人天堂一区二区| 抽插一区二区视频| 肉嘟嘟www视频在线观看高清| 亚洲永久AV无码精品秋霞| 91久久青青草原精品| 九九99久久| 亚洲色图日韩丝袜制服一区二区五月在线| 亚洲天堂AV在线播放| 日本不卡二三区| 奇米四色网| www.99热在线只有精品| 26uuu最新| 欧美日韩理论一区| 1769一区| 97综合国产精品高潮久久| 欧美国产精品久久九九| 亚洲欧洲小说图片视频 | 日本色婷婷| av2014 日韩在线中文字幕| 亚洲国产成人精品无码专区| 9长久久精品| caoni国产亚洲av| 蜜乳av一区二区三区四区不卡| 尤物黄色在线观看网站| 久久久不卡区一区二区三区久久久| 综合亚洲欧美精品日韩?v| 精品v1区| 少妇一区二区三区精选| 国产地址二三| caoni国产亚洲av| 亚洲日韩黑丝| 大香网伊人久久综合| 天天干人人乐| 2020中文字幕| 26uuu最新| 欧美少妇性乱| 黄色性爱网网| 97视频播放| 97精品国产97久久久久久| 中文字幕蜜乳av| 99热免费精品| 欧美午夜一区二区三区| 久久97视频| 97在线免费看| 国产最新小视频在线播放下载| 校园春色宗合网| 久久久精品国产亚洲AV无码| 欧美黑人熟妇精品91| 97国伦国色| 强奸乱伦av电影| 一区二区影视| 97天天做| 色爱国产| 国产在线观看一区二区三区| 91/欧美| 99自拍视频在线观看| av网站免费看| a片亚洲一本通视频| 丁香五月性爱| 欧美性爱第一页久久| 制服丝袜第二页| 日韩人妻大香蕉| 精品国产一区二区三区香蕉欧美| 午夜操操操| 超碰97资源大奶| 国产精品成人蜜臀AV在线| 最近二区三区视频大全| 麻豆国产成人精品| 97人人草| 亚洲成人性| 97免费在线观看视频| 久久熟女久| 久久婷婷国产一区二区色| 性影在线视频| 青青草国产欧美非洲黑人| 999九九精品| 久久久一热在线播放| 女人喷水视频在线观看| 91操熟女| 97视频免费在线| 超碰人妻久久人妻中文97| av资源在线播放天堂| 日婷婷| 欧美色图91| 啊啊啊啊啊舒服| 色爱综合网欧美| 综合色图亚洲欧美| 国产粉嫩出水在线播放| 日婷婷| 日韩97P| 丝袜美腿操av| 亚洲日韩XXX| 日韩久久超碰色| 九九九九九九九精品视频| 免费啪啪一级视频| 久久免费99精品久久久久久| 熟妇一区二区| 国产2.3.4区| 91艹| 日韩无码AB| 中文字幕片| 91久久久久久久久久久| 激情av| 岛国精品视频在线观看| 国产高清在线观看欧美| 69XX一中文字幕人妻91| 天天综合网91| 女生久久网| 日韩久射综合| 208天天久久九九九| 加勒比少妇AV婷婷六月天超碰超碰| 91人妻视频| 德国一二三不卡| 中文字幕91综合| 大稥蕉免费视频这里只有精品| 国产成人网址| 操人91| 色五月亚洲| 任你草| 95人妻爽爽人人做人人澡| 激情四射五月天| 狠狠爱综合网| 超碰人人色| 99热精品在线| 99精品在线观看| 久久人妻丝袜一区二区三| 久久天堂婷婷网| 少妇超碰在线| 欧美性天天影视| 日韩成人色图| 成人影 天天操 亚洲| 国产九九久久久精品| 欧中日成人免费影视| 日韩少妇丰满亚洲| 激情文学欧美| 伊人一区二区三区| 欧美亚洲厕所精品偷拍91| 亚洲天堂日本| 果冻传媒A片一二三区| 91狠狠狠| 亚洲开心网| 亚洲一卡二卡在线免费| 隔壁邻居波多野结衣中文字幕| 老熟女乱子伦中文字幕一区二区| 逼逼逼逼操操操操操操操操操午夜剧场|