select * froma where create_time<="
2017-03-29 19:30:36
"order by create_time desc
limit
1
select * from(
select * from
a
where create_time<="
2017-03-29 19:30:36
"order by create_time desc
) group by user_id
後來發現使用group by 可以根據group by 的引數列分組,但返回的結果只有一條,仔細觀察發現group by是將分組後的第一條記錄返回。時間在查詢後預設是順序排列,因此需要先將時間倒序排列,方可取出距離當前最近一條。
這樣查詢實際上還是進行了兩次查詢,雖然時間上相比第乙個方法有了質的飛躍,但是還可以進一步優化。
select *,max(create_time) fromawhere create_time<="
2017-03-29 19:30:36
"group by user_id
這句可以理解為將結果集根據user_id分組,每組取time最大一條記錄。這樣就很好的實現了批量查詢最近記錄,並且僅僅需要遍歷一次表,即使在資料量巨大的情況下也可以在很短的時間查出結果。
現在有一張資產裝置表:base_assets_turn
查詢資產的最新保管人
注:假設資產編號 assets_id=254
select * frombase_assets_turn
where assets_id = 254
order by create_time desc
limit
1
select * from ( select * frombase_assets_turn
where assets_id = 254
order by create_time desc) tt group by tt.assets_id;
by: 乙隻阿木木
LINQ SQL分組取最近一條記錄
最近專案有乙個需求,從訂單表查詢出每個客戶最近一條訂單記錄。資料庫表結構如下圖 1執行結果,已經按照客戶分組,並且按時間順序生成序號。對應linq 為 var table contex.gettable tolist var data table.orderbydescending a a.orde...
優化mysql查詢最新一條資料
title 優化mysql查詢最新一條資料 date 2019 07 24 11 23 21 categories 今天寫web時,發現有個請求一直沒有響應,用谷歌f12看了一下,請求出現了乙個問題。我第一反應是網路延遲,又試了幾次,還是這個問題,便看了一下後台控制台也沒報錯,便想是不是sql查詢時...
mysql 查詢表中最後一條記錄
查詢全部的記錄 select from test limit 查第一條記錄 select from test limit limit 1 查前面兩條記錄 select from test limit limit 0,2 查第二和第三條記錄 select from test limit limit 1...