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

MySQL使用group by分組查詢每組最新的一筆數據實現方式

 更新時間:2025年06月29日 13:19:20   作者:yuhuofei2021  
這篇文章主要介紹了MySQL使用group by分組查詢每組最新的一筆數據實現方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

問題來源

今天遇到一個查詢數據庫數據的問題:要獲取每個分組最新的一筆數據,并將每個分組最新的一筆數據重新組成一個新的列表

這種場景,當然是想到了分組查詢,使用 group by,思路也很清晰:

  • 將所有記錄根據時間 order by desc ,倒敘排列一遍
  • 將第1步中的數據,group by 一下,就能得到想要的列表

按這個思路,得到的 sql 語句如下:

select *
from (
select *
from company_info
where company_name = 'xxxxx科技有限公司'
order by create_time desc
) t
group by t.department;

思路沒有問題,語句也沒有問題,但執(zhí)行后,卻怎么也得不到想要的結果

這里有一個大坑,那就是從 mysql 5.7 開始,對于子查詢的排序,其實是不生效的,意思就是下面這個子查詢語句的排序,對于整體而言無效,所以最終得不到想要的結果

select *
from company_info
where company_name = 'xxxxx科技有限公司'
order by create_time desc

解決方式

方式一

還是上面的思路,只要加上一個 limit 就可以拿到想要的結果了,語句如下:

select *
from (
select *
from company_info
where company_name = 'xxxxx科技有限公司'
order by create_time desc
limit 1000
) t
group by t.department;

這個就算是在 mysql 5.7 及更高的版本也能跑,親測可用。

至于 limit 后面的數字是 1000 還是 10000,可以根據具體的業(yè)務場景設置

方式二

聯(lián)表查詢,實現的語句如下:

select
	*
from
	(
	select
		department,
		max(create_time) as date_time
	from
		company_info
	where
		company_name = 'xxxxx科技有限公司'
	group by
		department
) a
left join company_info t 
on
	t.department = a.department
	and t.create_time = a.date_time;

使用 max 函數獲取最新的 create_time 和 department,并分組,然后作為一張表 a 和原來的表 t 進行聯(lián)查

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • mysql備份的三種方式詳解

    mysql備份的三種方式詳解

    備份的本質就是將數據集另存一個副本,但是原數據會不停的發(fā)生變化,所以利用備份只能回復到數據變化之前的數據。那變化之后的呢?所以制定一個好的備份策略很重要
    2013-09-09
  • MySQL GROUP BY分組取字段最大值的方法示例

    MySQL GROUP BY分組取字段最大值的方法示例

    本文介紹了如何使用MySQL的GROUPBY語句結合MAX函數來實現分組取字段最大值的操作,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-01-01
  • MySQL刪除數據,表文件大小依然沒變的原因

    MySQL刪除數據,表文件大小依然沒變的原因

    這篇文章主要介紹了MySQL刪除數據,表文件大小依然沒變的原因,幫助大家更好的理解MySQL中的數據表,感興趣的朋友可以了解下
    2020-10-10
  • 在MySQL中實現基于時間點的數據恢復

    在MySQL中實現基于時間點的數據恢復

    在MySQL中實現基于時間點的數據恢復是一個復雜但可行的過程,主要依賴于MySQL的二進制日志(Binary Log),本文介紹了實現此功能的一般步驟,并有詳細的代碼供大家參考,需要的朋友可以參考下
    2024-03-03
  • mysql myisam 優(yōu)化設置設置

    mysql myisam 優(yōu)化設置設置

    mysql myisam 優(yōu)化設置設置,需要的朋友可以參考下。
    2010-03-03
  • MySQL?原理與優(yōu)化之Limit?查詢優(yōu)化

    MySQL?原理與優(yōu)化之Limit?查詢優(yōu)化

    這篇文章主要介紹了MySQL?原理與優(yōu)化之Limit?查詢優(yōu)化,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • MySQL數據庫如何克隆(帶腳本)

    MySQL數據庫如何克隆(帶腳本)

    這篇文章主要介紹了MySQL數據庫如何克隆(帶腳本)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • 解析mysql修改為utf8后仍然有亂碼的問題

    解析mysql修改為utf8后仍然有亂碼的問題

    本篇文章是對mysql修改為utf8后仍然有亂碼的問題進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • mySQL 延遲 查詢主表

    mySQL 延遲 查詢主表

    在主外鍵表存在關系的時候如果加上"lazy=true"的話,則表明延遲,即只查詢主表中的內容,而不查詢外鍵表中的內容。
    2009-09-09
  • mysql中find_in_set()函數用法及自定義增強函數詳解

    mysql中find_in_set()函數用法及自定義增強函數詳解

    這篇文章主要給大家介紹了關于mysql中find_in_set()函數用法及自定義增強函數的相關資料,在MySQL 數據庫中進行復雜的查詢語句,例如對多個字段進行篩選和排序,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-06-06

最新評論