mysql查詢group by分組最新記錄資料

2021-10-05 17:05:14 字數 931 閱讀 8689

先group by得到分組每乙個的max(id),即是最新記錄,之後通過inner join關聯得到最新記錄表。執行效率:0.031 sec

select b.*

from table_name b

inner join (select max(id) as id

from table_name

group by mac) a on a.id = b.id

這個方法也是網上看到的,先order by然後group by,這個操作一定要加limt,不然結果不是最新記錄,顯然這個方法的缺陷很明顯,分組數超過了limit數,就出問題了。執行效率:0.719 sec

select a.* 

from (select * from table_name order by create_time desc limit 10000) a

group by a.mac

這個方法是在方法一的基礎上關聯條件新增了group by的字段。執行效率:0.016 sec

select t1.*

from table_name t1

inner join (

select max(id) as id,mac

from table_name t1

group by mac

) t2

on t2.mac = t1.mac

and t2.id = t1.id

參考:sql - mysql fast retrieve last record in each group - stack overflow

MySQL之分組查詢(GROUP BY)

在 mysql select 語句中,允許使用 group by 子句,將結果集中的資料行根據選擇列的值進行邏輯分組,以便能彙總表內容的子集,實現對每個組而不是對整個結果集進行整合。語法格式如下 group by asc desc 語法說明如下 注意 group by 子句中的各選擇列必須也是 se...

group by 查詢原理

select classes id,count name as number from stu group by classes id查詢結果是 那麼臨時表在 呢?1 分析一下查詢語句,需要查詢表中的班級名稱以及每個班級對應的學生的數量。首先,sql語句會產生第一張臨時表,找到所有的classid ...

MYSQL使用group by,如何查詢出總記錄數

select t.report date t.user id from my table t group by t.user id,t.report date比如有這樣一條sql,根據t.user id,t.report date兩個字段統計 這樣前端頁面能展示資料,但往往需要乙個總記錄數,在有分頁...