Mysql分組查詢(xún)?nèi)ax那條記錄其它字段方式
Mysql分組查詢(xún)?nèi)ax那條記錄其它字段
需求描述
現(xiàn)有有需求要按類(lèi)型分組,查詢(xún)出每一分組最近的一條記錄,返回字段包含id,定時(shí)任務(wù)執(zhí)行時(shí)間(start_time)和任務(wù)id(job_id)。
SELECT id, MAX(start_time) AS startTime,job_id AS jobId FROM `sta_task_alarm` GROUP BY `job_id`;
問(wèn)題描述
上面這個(gè)SQL查詢(xún)出來(lái)的id 并不是我們想要的max 那條記錄的id,那么我們?cè)趺床樵?xún)到
MAX(start_time) 那條對(duì)應(yīng)的 id和job_id(這個(gè)上面可以查詢(xún)出來(lái))呢?
想到用 GROUP_CONCAT 函數(shù)去實(shí)現(xiàn):
SELECT SUBSTRING_INDEX( GROUP_CONCAT(id ORDER BY `id` DESC),',',1) AS id,job_id AS jobId SUBSTRING_INDEX( GROUP_CONCAT(start_time ORDER BY `start_time` DESC),',',1) AS startTime FROM `sta_task_alarm` GROUP BY job_id;
這樣是可以實(shí)現(xiàn),查詢(xún)出的結(jié)果為:
這個(gè)結(jié)果是正確的。
驗(yàn)證一下原始數(shù)據(jù):
最后:
其實(shí)因?yàn)閕d是自增的,按下面這樣查就可以了:
SELECT MAX(id) AS id, job_id AS jobId, MAX(start_time) AS startTime FROM `sta_task_alarm` WHERE is_delete = 0 GROUP BY job_id;
執(zhí)行結(jié)果:
Mysql分組查詢(xún)max值所在的記錄
臨近下班,要寫(xiě)一個(gè)sql。著急下班,所以有點(diǎn)亂。想了半天沒(méi)想出來(lái)這么寫(xiě)這個(gè)sql。查詢(xún)表里的max值和這個(gè)值所在的記錄。
晚上睡前才意識(shí)到自己吧內(nèi)聯(lián)inner jion 概念搞混了。inner只取字段相等的記錄。所以查詢(xún)偽代碼如下。
例如,查詢(xún)一個(gè)表 table 每一天記錄的最大時(shí)間。
先查詢(xún)這個(gè)表A中,每一天記錄的最大時(shí)間。將查詢(xún)結(jié)果作為另一個(gè)表B。然后將兩個(gè)表關(guān)聯(lián),關(guān)聯(lián)條件既B表最大時(shí)間等于A表時(shí)間和B表天數(shù)等于A表天數(shù)。
SELECT ? ? B.new_date, ? ? A.* FROM ? ? mytable AS A INNER JOIN ( ? ? SELECT ? ? ? ? max(date_time) new_date, ? ? ? ? myday ? ? FROM ? ? ? ? mytable ? ? GROUP BY ? ? ? ? myday ) AS B ON A.date_time = B.new_date AND A.myday = B.myday
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
基于mysql replication的問(wèn)題總結(jié)
本篇文章是對(duì)mysql中replication的問(wèn)題進(jìn)行了詳細(xì)分析介紹,需要的朋友參考下2013-06-06Centos7下無(wú)法遠(yuǎn)程連接mysql數(shù)據(jù)庫(kù)的原因與解決
MySQL是由Oracle公司開(kāi)發(fā)的開(kāi)源SQL數(shù)據(jù)庫(kù)管理系統(tǒng),下面這篇文章主要給大家介紹了關(guān)于在Centos7下無(wú)法遠(yuǎn)程連接mysql數(shù)據(jù)庫(kù)的原因與解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-09-09詳解MYSQL的備份還原(PHP實(shí)現(xiàn))
本篇文章是對(duì)MYSQL的備份還原進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06MySQL對(duì)數(shù)據(jù)表已有表進(jìn)行分區(qū)表的實(shí)現(xiàn)
本文主要介紹對(duì)現(xiàn)有的一個(gè)表進(jìn)行創(chuàng)建分區(qū)表,并把數(shù)據(jù)遷移到新表,可以按時(shí)間來(lái)分區(qū),具有一定的參考價(jià)值,感興趣的可以了解一下2021-10-10解決Mysql5.7.17在windows下安裝啟動(dòng)時(shí)提示不成功問(wèn)題
這篇文章主要介紹了解決Mysql5.7.17在windows下安裝啟動(dòng)時(shí)提示不成功問(wèn)題,需要的朋友可以參考下2017-03-03MySql中取前幾行數(shù)據(jù)使用limit來(lái)完成
在mysql中是沒(méi)有top關(guān)鍵字的,不過(guò)可以用limit來(lái)完成此功能,下面舉例為大家詳細(xì)介紹下它的使用方法,不會(huì)的朋友可以學(xué)習(xí)下2013-07-07Mysql掛掉后無(wú)法重啟報(bào)pid文件丟失的解決方法
這篇文章主要介紹了Mysql掛掉后無(wú)法重啟報(bào)pid文件丟失的解決方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09碰到MySQL無(wú)法啟動(dòng)1067錯(cuò)誤問(wèn)題解決方法
創(chuàng)建primay key過(guò)程中發(fā)生了斷電,當(dāng)電腦再次啟動(dòng)時(shí)候,發(fā)現(xiàn)mysql 服務(wù)無(wú)法啟動(dòng),使用 net start 提示 1067錯(cuò)誤;后來(lái)只能通過(guò)手工刪除數(shù)據(jù)文件,日志文件,再啟動(dòng)服務(wù),然后導(dǎo)入數(shù)據(jù)來(lái)完成2013-01-01MySQL將多條數(shù)據(jù)合并成一條的完整代碼示例
我們?cè)诓僮鲾?shù)據(jù)的時(shí)候,有時(shí)候需要把多行數(shù)據(jù),拼接成一行,下面這篇文章主要給大家介紹了關(guān)于MySQL將多條數(shù)據(jù)合并成一條的完整代碼示例,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2024-05-05