最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql中count(), group by, order by使用詳解

 更新時(shí)間:2017年05月21日 11:30:23   作者:linux_c_coding_man  
mysql中order by 排序查詢、asc升序、desc降序,group by 分組查詢、having 只能用于group by子句、作用于組內(nèi),having條件子句可以直接跟函數(shù)表達(dá)式。使用group by 子句的查詢語句需要使用聚合函數(shù)。

最近做IM的時(shí)候遇到一個(gè)問題,同時(shí)用到了這三個(gè)關(guān)鍵字。就是查詢一個(gè)人的離線消息詳情,我們服務(wù)端返回給客戶端顯示的這個(gè)詳情包括了三個(gè)內(nèi)容,第一個(gè)要求列出離線這段時(shí)間哪些人或者群給你發(fā)了消息,第二個(gè)這其中的某個(gè)人或者群發(fā)了多少條離線消息,第三個(gè)拿出最新的一條顯示出來。很明顯,group by分組哪些人或者群給你發(fā)了離線消息,count()得到離線消息數(shù)量,order by時(shí)間來排序拿出最新的消息。

select count(1) as cnt, msg_data from t_im_chat_offline_msg where to_company_id = ? and to_user_id = ? order by create_time desc group by from_company_id, from_user_id;

然后果不其然group by和order by一起檢索就報(bào)錯(cuò)了,我們可以用嵌套子查詢。

select count(1) as cnt, msg_data from (select * from t_im_chat_offline_msg where to_company_id = ? and to_user_id = ? order by create_time desc) as temp_table group by from_company_id, from_user_id;

我們可以對(duì)已經(jīng)排序的結(jié)果集,再來分組并計(jì)算數(shù)量。這里還有一個(gè)暗坑,我自己不小心給躲過去了,其實(shí)count()會(huì)造成order by排序無效,舉個(gè)例子:

select count(1) as cnt, msg_data from t_im_chat_offline_msg where to_company_id = ? and to_user_id = ? order by create_time desc;

這個(gè)語句最后得到的一條記錄,其中的msg_data其實(shí)是根本沒有排序的結(jié)果,也就是數(shù)據(jù)庫原順序,應(yīng)該是先插入的一條消息,就是說時(shí)間舊的消息。為了避免這個(gè)問題,所以嵌套子查詢?cè)谶@里先排序,再讓它去count()就規(guī)避了。自己無意躲過去了,還好反復(fù)改語句測(cè)試了一番才發(fā)現(xiàn)。

相關(guān)文章

  • Linux中更改轉(zhuǎn)移mysql數(shù)據(jù)庫目錄的步驟

    Linux中更改轉(zhuǎn)移mysql數(shù)據(jù)庫目錄的步驟

    前幾天發(fā)現(xiàn)由于MySQL的數(shù)據(jù)庫太大,默認(rèn)安裝的/var盤已經(jīng)再也無法容納新增加的數(shù)據(jù),只能想辦法轉(zhuǎn)移數(shù)據(jù)的目錄。網(wǎng)上有很多相關(guān)的文章寫到轉(zhuǎn)移數(shù)據(jù)庫目錄的文章,但轉(zhuǎn)載的過程中還會(huì)有一些錯(cuò)誤,因?yàn)榇蟛糠秩烁揪蜎]測(cè)試過,這篇文章是本文測(cè)試過整理好后分享給大家。
    2016-11-11
  • MySQL的語法及其使用指南

    MySQL的語法及其使用指南

    數(shù)據(jù)庫的選取,創(chuàng)建,丟棄和變更 數(shù)據(jù)表和索引的創(chuàng)建,變更和丟棄從數(shù)據(jù)表檢索信息
    2008-04-04
  • Mysql中有關(guān)Datetime和Timestamp的使用總結(jié)

    Mysql中有關(guān)Datetime和Timestamp的使用總結(jié)

    mysql數(shù)據(jù)庫常用的時(shí)間類型有timestamp和datetime,兩者主要區(qū)別是占用存儲(chǔ)空間長(zhǎng)度不一致、可存儲(chǔ)的時(shí)間也有限制,本文就來詳細(xì)的介紹一下,感興趣的可以了解一下
    2021-12-12
  • mySQL 8.0.33安裝指南(推薦)

    mySQL 8.0.33安裝指南(推薦)

    本文提供MySQL8.0.33的詳細(xì)安裝步驟,從解壓安裝包到設(shè)置系統(tǒng)服務(wù)、配置遠(yuǎn)程訪問及安全設(shè)置等,包括創(chuàng)建和配置MySQL用戶,設(shè)置環(huán)境變量,初始化數(shù)據(jù)庫等關(guān)鍵操作,同時(shí)強(qiáng)調(diào)安全性的重要性,如設(shè)置強(qiáng)密碼、限制遠(yuǎn)程訪問權(quán)限,并建議在重要操作前進(jìn)行數(shù)據(jù)庫備份
    2024-10-10
  • mysql允許遠(yuǎn)程連接的方法

    mysql允許遠(yuǎn)程連接的方法

    這篇文章主要介紹了mysql允許遠(yuǎn)程連接的方法,內(nèi)容很詳細(xì),感興趣的小伙伴們可以參考一下
    2015-12-12
  • MySQL利用frm文件和ibd文件恢復(fù)表結(jié)構(gòu)和表數(shù)據(jù)

    MySQL利用frm文件和ibd文件恢復(fù)表結(jié)構(gòu)和表數(shù)據(jù)

    當(dāng)MySQL數(shù)據(jù)庫遭遇崩潰或數(shù)據(jù)丟失時(shí),利用備份的 .frm 和 .ibd 文件恢復(fù)數(shù)據(jù)是一種有效的解決方案,.frm 文件包含表的結(jié)構(gòu)信息,而 .ibd 文件則存儲(chǔ)表的實(shí)際數(shù)據(jù),本文將提供一個(gè)詳細(xì)的步驟指南,演示如何利用這些文件恢復(fù)MySQL表數(shù)據(jù)和表結(jié)構(gòu),需要的朋友可以參考下
    2024-05-05
  • mysql8報(bào)錯(cuò):ERROR?1410?(42000):?You?are?not?allowed?to?create?a?user?with?GRANT解決辦法

    mysql8報(bào)錯(cuò):ERROR?1410?(42000):?You?are?not?allowed?to?

    電腦新裝的mysql,版本為8.0以上,分配權(quán)限時(shí)直接帶密碼和賬號(hào)會(huì)報(bào)錯(cuò),這篇文章主要給大家介紹了關(guān)于mysql8報(bào)錯(cuò):ERROR?1410?(42000):?You?are?not?allowed?to?create?a?user?with?GRANT的解決辦法,需要的朋友可以參考下
    2022-06-06
  • mysql community server 8.0.12安裝配置方法圖文教程

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

    這篇文章主要為大家詳細(xì)介紹了mysql community Server 8.0.12安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Mysql實(shí)時(shí)備份實(shí)現(xiàn)方法

    Mysql實(shí)時(shí)備份實(shí)現(xiàn)方法

    這篇文章主要介紹了Mysql實(shí)現(xiàn)實(shí)時(shí)備份,需要的朋友可以參考下
    2016-02-02
  • MySQL如何優(yōu)化查詢速度

    MySQL如何優(yōu)化查詢速度

    這篇文章主要介紹了MySQL如何優(yōu)化查詢速度,幫助大家提升自己的數(shù)據(jù)庫性能,感興趣的朋友可以了解下
    2020-08-08

最新評(píng)論

台南县| 交城县| 盐津县| 浮山县| 承德市| 临夏县| 应用必备| 敦化市| 石阡县| 遵义县| 堆龙德庆县| 长顺县| 吴川市| 冕宁县| 綦江县| 阜宁县| 吐鲁番市| 沙坪坝区| 新安县| 印江| 南木林县| 潼关县| 永定县| 金门县| 陇川县| 葫芦岛市| 娄烦县| 东莞市| 敦化市| 衡山县| 阳高县| 绥宁县| 深水埗区| 横峰县| 华亭县| 菏泽市| 白河县| 宝清县| 威海市| 梁河县| 鹿泉市|