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

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子句、作用于組內,having條件子句可以直接跟函數表達式。使用group by 子句的查詢語句需要使用聚合函數。

最近做IM的時候遇到一個問題,同時用到了這三個關鍵字。就是查詢一個人的離線消息詳情,我們服務端返回給客戶端顯示的這個詳情包括了三個內容,第一個要求列出離線這段時間哪些人或者群給你發(fā)了消息,第二個這其中的某個人或者群發(fā)了多少條離線消息,第三個拿出最新的一條顯示出來。很明顯,group by分組哪些人或者群給你發(fā)了離線消息,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 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;

我們可以對已經排序的結果集,再來分組并計算數量。這里還有一個暗坑,我自己不小心給躲過去了,其實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其實是根本沒有排序的結果,也就是數據庫原順序,應該是先插入的一條消息,就是說時間舊的消息。為了避免這個問題,所以嵌套子查詢在這里先排序,再讓它去count()就規(guī)避了。自己無意躲過去了,還好反復改語句測試了一番才發(fā)現。

相關文章

  • Linux中更改轉移mysql數據庫目錄的步驟

    Linux中更改轉移mysql數據庫目錄的步驟

    前幾天發(fā)現由于MySQL的數據庫太大,默認安裝的/var盤已經再也無法容納新增加的數據,只能想辦法轉移數據的目錄。網上有很多相關的文章寫到轉移數據庫目錄的文章,但轉載的過程中還會有一些錯誤,因為大部分人根本就沒測試過,這篇文章是本文測試過整理好后分享給大家。
    2016-11-11
  • MySQL的語法及其使用指南

    MySQL的語法及其使用指南

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

    Mysql中有關Datetime和Timestamp的使用總結

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

    mySQL 8.0.33安裝指南(推薦)

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

    mysql允許遠程連接的方法

    這篇文章主要介紹了mysql允許遠程連接的方法,內容很詳細,感興趣的小伙伴們可以參考一下
    2015-12-12
  • MySQL利用frm文件和ibd文件恢復表結構和表數據

    MySQL利用frm文件和ibd文件恢復表結構和表數據

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

    mysql8報錯:ERROR?1410?(42000):?You?are?not?allowed?to?

    電腦新裝的mysql,版本為8.0以上,分配權限時直接帶密碼和賬號會報錯,這篇文章主要給大家介紹了關于mysql8報錯: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安裝配置方法圖文教程

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

    Mysql實時備份實現方法

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

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

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

最新評論

邻水| 天峻县| 阿拉善右旗| 太湖县| 南和县| 庆云县| 姚安县| 五台县| 吉林市| 蒙城县| 老河口市| 威海市| 广饶县| 南岸区| 嘉鱼县| 登封市| 新郑市| 乌拉特前旗| 宝兴县| 浮梁县| 武宁县| 晋州市| 聂荣县| 荔浦县| 同德县| 平乐县| 鹤岗市| 丰原市| 工布江达县| 甘泉县| 尚志市| 磐安县| 栾城县| 临高县| 文化| 高邮市| 城市| 崇左市| 西乌珠穆沁旗| 贡觉县| 静乐县|