2011-10-18 2 views
1

MySQL 쿼리에 약간의 문제가있어 도움이 필요합니다. 쿼리는 매우 간단하지만 올바르게 만들 수는 없습니다.MySQL 쿼리 - 하나의 필드로 다른 그룹으로 주문하기

나는 필드 로그인라는 이름의 테이블이 있습니다 login_ID에의 PK를 MEMBER_ID FK 회원제 테이블 스탬프에서 - 유닉스 타임 스탬프, 회원이 레코드가이 테이블마다 A를 삽입

로그인 회원이 로그인합니다.

내가 원하는 것은 가장 높은 스탬프 값인 각 회원 ID와 가장 최근의 로그인을 얻는 것입니다. 나는 시도했다 :

그러나 결과는 내가 찾던 것이 아니고, 나는 각 회원 로그인의 첫 번째 기록을 얻었다.

누군가가이 문제에 도움을 주시면 감사하겠습니다. 감사합니다.

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

각 회원 ID를, 가장 최근의 시간과 함께 : MAX (스탬프) 나는이 생각

+0

난 정말 완전히 이해하지 MySQL은 또한 (group by 절없이 집계 함수를 허용하는 이유 다른 방법은 집계 함수가없는 group by 절이 아닌 열을 참조하는 것입니다. 이것은 매우 오도 된 것입니다 ... –

+0

대신 MySQL에서 [now now] (http://www.w3schools.com/sql/func_now.asp)를 사용하지 않으시겠습니까? – Griffin

답변

4

으로 필드 목록에서 스탬프를 교체

+0

예, 정확하게 고마워요! – TheMethod

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

보십시오 당신이 원하는 무엇인가 로그인은 모든 사용자의 로그인 시간순으로 정렬됩니다 (가장 최근의 첫 번째). 당신이 그룹화도 필요로하지 않는 particlar 사용자의 최근 시간을 얻을 원한다면

1

는 그리고 바로 사용

SELECT MAX(stamp) FROM logins WHERE member_id = 27 
관련 문제