2011-10-18 11 views
1

私はMySQLクエリに少し問題があり、助けを求めていました。クエリはかなりシンプルなようですが、私はそれを正しく理解することはできません。Mysqlのクエリ - グループ1つのフィールドで、別のフィールドで注文します。

私は、フィールドでのログインという名前のテーブルがあります。 LOGIN_IDのPKを MEMBER_ID FKメンバー表 スタンプから - UNIXタイムスタンプ、メンバーはレコードがこのテーブルの各時間Aに挿入され

にログインメンバーがログインします。

私がしたいのは、それぞれの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

代わりに[今すぐ機能](http://www.w3schools.com/sql/func_now.asp)をMySQLで使用してみませんか? – Griffin

答えて

4

私は、これはあなたが欲しいものだと思う:

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

各メンバーID、直近の時間と一緒にログインは、全員のログイン時間を降順でソートしたものです(最近の最初のもの)。あなたがグループ化しても必要としないparticlarユーザーの最近の時間を取得したい場合

+0

はい、これはちょうど、ありがとう! – TheMethod

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

MAX(スタンプ)を使用してフィールドリストにスタンプを交換してみてください

1

はまた、ちょうど使用:

SELECT MAX(stamp) FROM logins WHERE member_id = 27 
関連する問題