日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Mysql分組排序取每組第一條的2種實(shí)現(xiàn)方式

瀏覽:628日期:2023-02-18 16:43:30
目錄
  • 前言
  • 前期準(zhǔn)備
  • 第一種
    • 原因分析:
    • 解決:
  • 第二種
    • GROUP_CONCAT函數(shù)解釋:
  • 總結(jié)

    前言

    記錄一下最近的一個(gè)需求,查不同產(chǎn)品排名第一的圖片作為主圖

    其實(shí)一開始想用的是mybatis的級(jí)聯(lián)查詢,結(jié)果說需要一次性全部查出來

    那就沒事了,改sql咯:

    親測實(shí)用

    前期準(zhǔn)備

    MySQL:8.0

    Java:1.8

    建表語句:

    CREATE TABLE `product_image` (  `id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT "主鍵id",  `product_id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT "產(chǎn)品id",  `sort_id` int NOT NULL COMMENT "圖片序號(hào)",  `img_url` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT "圖片路徑",) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT="產(chǎn)品圖片表";

    第一種

    這一種也是網(wǎng)上推薦最多的,但個(gè)人覺得局限性太大,不介意用在實(shí)戰(zhàn)上

    sql:

    select * from (select * from product_image order by sort_id limit 10000) a group by a.product_id

    問題重點(diǎn):

    • 相信個(gè)別同學(xué)復(fù)制過去執(zhí)行就報(bào)了this is incompatible with sql_mode=only_full_group_by錯(cuò)誤
    • 之所有不推薦在實(shí)戰(zhàn)中這樣寫,是因?yàn)槠渲凶硬樵?code>limit 10000已經(jīng)固定寫死了

    原因分析:

    一、這個(gè)錯(cuò)誤發(fā)生在mysql 5.7.5 版本及以上版本會(huì)出現(xiàn)的問題:
    mysql 5.7.5版本以上默認(rèn)的sql配置是:sql_mode=“ONLY_FULL_GROUP_BY”,這個(gè)配置嚴(yán)格執(zhí)行了"SQL92標(biāo)準(zhǔn)"。
    很多從5.6升級(jí)到5.7時(shí),為了語法兼容,大部分都會(huì)選擇調(diào)整sql_mode,使其保持跟5.6一致,為了盡量兼容程序。

    二、在sql執(zhí)行時(shí),出現(xiàn)該原因,簡單來說就是:
    由于開啟了ONLY_FULL_GROUP_BY的設(shè)置,如果select 的字段不在 group by 中,
    并且select 的字段未使用聚合函數(shù)(SUM,AVG,MAX,MIN等)的話,那么這條sql查詢是被mysql認(rèn)為非法的,會(huì)報(bào)錯(cuò)誤…

    所以mysql在5.7.5版本及以上版本就會(huì)報(bào)這個(gè)錯(cuò)誤

    解決:

    select ANY_VALUE(id),  product_id, ANY_VALUE(sort_id) from (select * from product_image order by sort_id  limit 100000) a group by a.product_id

    只需要把需要查詢的字段用ANY_VALUE(字段)函數(shù)包住就能正常運(yùn)行

    有沒有同學(xué)想過為什么需要limit:

    看著極其多余,而且寫死數(shù)量所以導(dǎo)致實(shí)戰(zhàn)不實(shí)用

    那是因?yàn)?/strong>:

    從mysql5.7開始,子查詢的排序已經(jīng)變?yōu)闊o效了。所以要加個(gè)limit,這樣子查詢就不光是排序,所以此時(shí)排序會(huì)生效,但有條數(shù)限制10000

    第二種

    是使用GROUP_CONCAT函數(shù)解決的

    sql:

    select group_concat(distinct product_id ORDER BY sort_id), min(id) ,min(img_url)from product_image group by product_id

    GROUP_CONCAT函數(shù)解釋:

    GROUP_CONCAT函數(shù)用于將GROUP BY產(chǎn)生的同一個(gè)分組中的值連接起來,返回一個(gè)字符串結(jié)果

    GROUP_CONCAT函數(shù)首先根據(jù)GROUP BY指定的列進(jìn)行分組,將同一組的列顯示出來,并且用分隔符分隔,由函數(shù)參數(shù)(字段名)決定要返回的列

    語法結(jié)構(gòu):

    GROUP_CONCAT([DISTINCT] 要連接的字段 [ORDER BY 排序字段 ASC/DESC] [SEPARATOR "分隔符"])

    說明:

    (1) 使用DISTINCT可以排除重復(fù)值

    (2) 如果需要對(duì)結(jié)果中的值進(jìn)行排序,可以使用ORDER BY子句

    (3) SEPARATOR '分隔符’是一個(gè)字符串值,默認(rèn)為逗號(hào)

    (1) 使用DISTINCT可以排除重復(fù)值

    (2) 如果需要對(duì)結(jié)果中的值進(jìn)行排序,可以使用ORDER BY子句

    (3) SEPARATOR '分隔符’是一個(gè)字符串值,默認(rèn)為逗號(hào)

    其實(shí)我還是更傾向于級(jí)聯(lián)查,不用再重新組裝數(shù)據(jù),代碼也更簡潔

    總結(jié)

    到此這篇關(guān)于Mysql分組排序取每組第一條的2種實(shí)現(xiàn)方式的文章就介紹到這了,更多相關(guān)Mysql分組排序取每組第一條內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

    標(biāo)簽: MySQL
    日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
    一区免费视频| 日韩欧美国产精品综合嫩v| 在线一区av| 国产一区二区三区国产精品| 国产视频一区二区在线播放| 国产精品mv在线观看| 国产精品xxx| 精品国产亚洲一区二区在线观看| 久久国产精品美女| 日韩欧美激情| 欧美亚洲福利| 国产精品啊啊啊| 精品亚洲自拍| 精品国模一区二区三区| 亚洲第一区色| 羞羞答答国产精品www一本| 亚洲色图网站| 日韩国产欧美在线播放| 欧美国产中文高清| 91欧美在线| 久久一区二区中文字幕| 99香蕉国产精品偷在线观看 | 99久久99视频只有精品 | 欧美香蕉视频| 欧美成人综合| 综合色一区二区| 国产精品观看| 日韩毛片在线| 亚洲激情精品| 日本国产欧美| 成人一区而且| 午夜在线一区| 国产精品99久久免费| 电影亚洲精品噜噜在线观看| 国产精品丝袜xxxxxxx| 亚洲美女91| 国产精品蜜月aⅴ在线| av在线最新| 视频一区中文字幕国产| 国产精品一区高清| 久久精品国产www456c0m| 中文字幕一区二区三区日韩精品 | 精品中文在线| 91久久久精品国产| 蜜桃av一区二区三区电影| 国产精品色在线网站| 色吊丝一区二区| 中文字幕乱码亚洲无线精品一区| 麻豆久久一区| 性色av一区二区怡红| 麻豆成人av在线| 亚洲韩日在线| 国产精品啊v在线| 亚洲神马久久| 久久免费视频66| 99国产精品私拍| 美女在线视频一区| 噜噜噜久久亚洲精品国产品小说| 美女久久久久久| 欧美91福利在线观看| 91大神在线观看线路一区| 日韩精品网站| 国产精品视频3p| 日韩影院免费视频| 亚洲性色av| 国产精品亲子伦av一区二区三区 | 97视频热人人精品免费| 亚洲精品麻豆| 999国产精品999久久久久久| 国产探花在线精品| 欧美日韩国产一区二区三区不卡| 国产欧美一级| 六月天综合网| 91精品国产调教在线观看| 国产精品白浆| 亚洲日本国产| 欧美国产91| 成人日韩av| 久久狠狠亚洲综合| 男女精品网站| 久久九九电影| 加勒比视频一区| 日本午夜精品| 亚洲免费高清| 亚洲成av人片一区二区密柚 | 国产免费久久| 老牛影视一区二区三区| 欧美日韩视频免费观看| 国产伦精品一区二区三区千人斩| 亚洲欧美日韩国产综合精品二区| 中文在线中文资源| 老鸭窝一区二区久久精品| 日本亚洲视频| 亚洲在线观看| 欧美日韩水蜜桃| 人在线成免费视频| 精品美女视频 | se01亚洲视频| 福利片在线一区二区| 国产精品最新| 啪啪亚洲精品| 亚洲精品韩国| 水野朝阳av一区二区三区| 亚洲欧美一区在线| 99久久婷婷| 久久久国产精品一区二区中文| 精品色999| 精品久久电影| 精品视频在线一区二区在线| 国产精品久久久久9999高清| 欧美在线观看天堂一区二区三区| 亚洲午夜免费| 视频在线观看一区| 日韩中文字幕一区二区三区| 日韩一区二区久久| 日韩一区二区久久| 亚洲男女自偷自拍| 视频一区二区国产| 免费观看日韩电影| 蜜臀va亚洲va欧美va天堂| 欧美在线综合| 在线看片一区| 亚洲精品看片| 日韩三级视频| 日韩不卡一区二区| 欧美亚洲tv| 国产福利资源一区| 国产精品调教视频| 麻豆成人在线观看| 国产精品成人a在线观看| 欧产日产国产精品视频| 久久九九精品| 久久国产精品亚洲77777| 亚洲在线久久| 日韩av影院| 国产欧美69| 91综合视频| 在线日韩视频| 噜噜噜躁狠狠躁狠狠精品视频| 亚洲综合福利| 国产精品三级| 水蜜桃精品av一区二区| 高清av一区| 999国产精品| 久久午夜影视| 欧美伊人影院| 国内自拍视频一区二区三区| 色偷偷偷在线视频播放| 欧美aa国产视频| 亚州av日韩av| 久久xxx视频| 日产精品一区二区| 亚洲天堂久久| 亚洲欧美网站在线观看| 日韩欧美1区| 亚洲影院天堂中文av色| 亚洲欧美日韩在线观看a三区| 亚洲丝袜美腿一区| 中文字幕日韩欧美精品高清在线| 午夜欧美精品久久久久久久| 免费久久久久久久久| 视频一区二区不卡| 精品三级国产| 亚洲精品91| 国产一区一一区高清不卡| 日韩精品午夜| 福利一区和二区| 亚洲精品99| 激情婷婷综合| 日韩精品三级| 国产免费av一区二区三区| 亚洲精品在线国产| 欧美丝袜一区| 国产欧洲在线| 91精品一区二区三区综合在线爱| 日韩欧美一区二区三区免费观看| 高清不卡一区| 成人羞羞在线观看网站| 久久中文亚洲字幕| 免费毛片在线不卡| 亚洲一区二区三区四区五区午夜| 精品一区免费| 免费观看日韩电影| 日韩精品一级中文字幕精品视频免费观看 | 欧美激情三区| 香蕉久久久久久| 7777精品| 久久精品资源| 日本不卡不码高清免费观看| 蜜臀久久久99精品久久久久久| 日本一不卡视频| 丁香婷婷久久| 国产女优一区| 精品国产亚洲一区二区三区在线 | 国产精品免费看| 精品国产乱码| 日韩中文av| 91精品福利| 国产精品欧美在线观看| 国产亚洲欧洲|