1. 程式人生 > >mysql 查詢不同使用者 最新的一條記錄

mysql 查詢不同使用者 最新的一條記錄

MYSQL查詢不同使用者 最新的一條記錄

方法1:查詢出結果後將時間排序後取第一條(只能取到一條,並且不能查詢不同客戶的記錄)

SELECT CUSTOMER_ID,CONTENT,MODIFY_TIME FROM `service_records` ORDER BY MODIFY_TIME DESC LIMIT 1;

查詢結果:

方法2:查詢排序後group by(先按照MODIFY_TIME把順序按照降序排列好,排列好的值作為子查詢a,然後再根據子查詢a按照CUSTOMER_ID分組

SELECT CUSTOMER_ID,CONTENT,MODIFY_TIME FROM 
 (SELECT CUSTOMER_ID,CONTENT,MODIFY_TIME FROM `service_records` ORDER BY MODIFY_TIME DESC) a 
GROUP BY a.CUSTOMER_ID

查詢結果為:

group by 可以根據group by 的引數列分組,但返回的結果只有一條,仔細觀察發現group by是將分組後的第一條記錄返回。時間在查詢後預設是順序排列,因此需要先將時間倒序排列,方可取出距離當前最近一條。這樣查詢實際上還是進行了兩次查詢。

方法三:將max() 方法和group by結合使用

SELECT CUSTOMER_ID,CONTENT,MAX(MODIFY_TIME) FROM `service_records` GROUP BY CUSTOMER_ID

查詢結果為:

和方法二對比發現,該寫法是錯誤的,雖然MODIFY_TIME取的值是最大值,是正確的,但是其他的值取的都是在不同的CUSTOMER_ID下的第一條記錄,所以MODIFY_TIME列的值和其他列的值不匹配,不是同一條記錄。。。所以正確的寫法是第二種,先正確的排好序,然後再利用group by 分組<