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

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

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

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

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一起檢索就報錯了,我們可以用嵌套子查詢。

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;

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

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;

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

相關(guān)文章

  • MySQL查詢語句過程和EXPLAIN語句基本概念及其優(yōu)化

    MySQL查詢語句過程和EXPLAIN語句基本概念及其優(yōu)化

    在MySQL中我們經(jīng)常會使用到一些查詢語句,如果使用合適的索引會大大簡化和加速查找,下面小編來和大家一起學(xué)習(xí)一下知識
    2019-05-05
  • MySQL索引失效的幾種情況詳析

    MySQL索引失效的幾種情況詳析

    這篇文章主要給大家介紹了關(guān)于MySQL索引失效的幾種情況,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 修改MySQL的默認密碼的四種小方法

    修改MySQL的默認密碼的四種小方法

    對于windows平臺來說安裝完MySQL后,系統(tǒng)就已經(jīng)默認生成了許可表和賬戶,下文中就教給大家如何修改MySQ的默認密碼。
    2015-09-09
  • 簡述MySQL InnoDB存儲引擎

    簡述MySQL InnoDB存儲引擎

    這篇文章主要介紹了MySQL InnoDB存儲引擎的相關(guān)資料,幫助大家更好的了解MySQL的存儲引擎,感興趣的朋友可以了解下
    2020-08-08
  • Navicat查詢結(jié)果不能修改的原因及解決方法

    Navicat查詢結(jié)果不能修改的原因及解決方法

    下面小編就為大家?guī)硪黄狽avicat查詢結(jié)果不能修改的原因及解決方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • 當(dāng)Mysql行鎖遇到復(fù)合主鍵與多列索引詳解

    當(dāng)Mysql行鎖遇到復(fù)合主鍵與多列索引詳解

    這篇文章主要給大家介紹了關(guān)于當(dāng)Mysql行鎖遇到復(fù)合主鍵與多列索引的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用Mysql具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • MySQL分頁優(yōu)化

    MySQL分頁優(yōu)化

    這篇文章主要為大家詳細介紹了MySQL分頁優(yōu)化,內(nèi)容思路很詳細,有意對MySQL分頁優(yōu)化的朋友可以參考一下
    2016-04-04
  • 連接遠程mysql數(shù)據(jù)庫失敗常見原因及解決方案

    連接遠程mysql數(shù)據(jù)庫失敗常見原因及解決方案

    這篇文章主要介紹了連接遠程mysql數(shù)據(jù)庫失敗常見原因及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • mysql全面解析json/數(shù)組

    mysql全面解析json/數(shù)組

    這篇文章主要介紹了mysql全面解析json/數(shù)組,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07

最新評論