MySQL中查詢時間最大的一條記錄


在項目中要查詢用戶最近登錄的一條記錄的 ip

直接寫如下 SQL: 

SELECT ip,MAX(act_time) FROM users_login GROUP BY login_id;   

但是這樣是取不出用戶登錄記錄中時間最大的那個 ip , 僅僅只是查到了最大時間,和 ip 沒關系

找了相當多的文章,經過自己測試,發現一個比較好的方式處理這個問題,舉例如下:

現在假設有一張數據表 A , 字段和數據如下:

姓名(name) 身份證(唯一標識)(id) 購買產品(pro) 價格(price) 數量(count) 購買時間(time)
張1 111111 Computer 1600 5 2018-03-03
張1 11111 Phone 12     12   2018-03-05
張2 22222 Pipe 1 234 2018-03-04
張2 22222 Computer 1600 5 2018-03-05
張3 33333 Phone 12 12 2018-03-03
張3 33333 Pipe 1 234 2018-03-06
張3 33333 Computer 1600   5 2018-03-09
張4 44444 Phone 12 12 2018-03-09
張5 55555 Pipe 1 234 2018-03-02

 

在這張數據表中,我們需要查詢表中每一個用戶在最后一次都購買了什么產品以及相關信息

SQL語句如下:

SELECT * from (SELECT * FROM A ORDER BY time) a GROUP BY a.id;

解釋:

在這里,我們首先對 A 表進行按照時間的順序排序,這樣我們可以把每個用戶最后一次購買記

錄排在最上面,排序之后再嵌套一層查詢,這一層查詢使用  GROUP BY 語句。在使用GROUP 

BY 語句的時候,他會按照分組將你排過序的數據的第一條取出來,這樣就比較符合條件了,這種

方式在添加索引的情況下效率相當快

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM