2011-10-18 80 views
1

我對MySQL查詢有點麻煩,並希望得到一些幫助。查詢看起來相當簡單,但我似乎無法做到。Mysql查詢 - 分組由一個字段和另一個字段排序

我有一個名爲登錄與領域表中: LOGIN_ID PK member_id FK從一個成員表 郵票 - 一個UNIX時間戳,當構件登錄

記錄被插入到該表中的每個時間成員登錄。

我想要做的就是獲取每個member_id和最近的登錄信息,即最高的郵票值。我試過了:

SELECT member_id,FROM_UNIXTIME(stamp) as log_time 
FROM `logins` 
WHERE member_id = 27 
GROUP BY member_id 
ORDER BY stamp DESC 

但結果不是我在找的東西,我剛剛得到了每個成員登錄的第一條記錄。

如果有人可以幫助,這將是非常感謝,謝謝!

+0

我從來沒有真正完全理解爲什麼MySQL允許聚合函數沒有GROUP BY子句(也反過來:引用不在沒有聚合函數的group by子句中的列)。這是非常誤導... –

+0

爲什麼不使用MySQL中的[now函數](http://www.w3schools.com/sql/func_now.asp)呢? – Griffin

回答

4

我覺得這個更換印章在你的領域名單是你想要什麼:

SELECT member_id, FROM_UNIXTIME(MAX(stamp)) AS log_time 
FROM logins 
GROUP BY member_id 
ORDER BY stamp DESC 

每個成員的ID,與最近的時間一起登錄,按大家的登錄時間降序排列(最近的第一個)。

+0

是的,這就是它,謝謝! – TheMethod

4
SELECT member_id, max(stamp) FROM `logins` GROUP BY member_id 
3

嘗試用MAX(蓋章)

1

如果您想了解最近你不需要連分組一particlar用戶的時間,只需使用:

SELECT MAX(stamp) FROM logins WHERE member_id = 27 
相關問題