2012-02-03 2 views
0

누군가 도움을 줄 수 있는지 궁금해합니다.PHP/MySQL - 유일하게 업데이트 된 최신 3 개의 레코드 얻기

나는 기록을 '창조'최근 3를 얻을 쿼리를 작성해야하지만, 자신의 UID 예를 들어, 내 MySQL의 필드가 너무

uid created 
19  2012-02-01 01:08:43 
18  2012-02-31 17:07:21 
19  2012-02-31 16:07:20 
20  2012-02-31 13:03:00 

확인과 같이 있도록 고유해야합니다, 그래서 내가 원하는 마지막 3 개의 uid가 생성되게하십시오 ... 그러나 그들은 동일한 uid가 두 번 나타나지 않도록 고유 한 uid이어야합니다.

SELECT * FROM (SELECT * FROM table ORDER BY uid, created DESC) AS selected GROUP BY uid LIMIT 3 

논리는 다음과 같습니다 : 하강 및 제한의 UID 필드에 의해 주문 테이블에

건배

답변

0

이이

SELECT * FROM (SELECT * FROM tablename ORDER BY uid, created DESC) ordered GROUP BY uid 
+0

'작성한 날짜'로 주문하지 않는 것을 제외하면 작동하지 않습니다. – BigJobbies

0

당신이 쿼리 지난 3 개 ID를 선택할 수 있습니다해야 3 필드.

SELECT DISTINCT * FROM table GROUP BY uid; 

그것은 당신에게 모든 고유 UID의를 줄 것이다 :

+0

아, 미안 해요. 나는 그 uid가 기본 키가 아니라고 생각했다. 여기에 맞는 대답이 있습니다 : SELECT * FROM (SELECT * FROM 테이블 ORDER BY uid, 생성 된 DESC) AS GROUP BY uid' LIMIT 3 –

+0

답을 편집하십시오. –

+0

나는 이미 편집했다. –

0
SELECT * 
FROM table 
ORDER BY created DESC 
GROUP BY uid LIMIT 0,3 
0

당신이 계신 얻을에 의한 고유 및 그룹을 사용합니다. 그런 다음 ORDER BY를 추가하여 마지막 레코드를 가져 오도록하십시오.

+0

SELECT DISTINCT * FROM 테이블 GROUP BY uid ORDER BY 작성된 DESC; 이것은 완벽하게 작동하는 것 같습니다 :) – BigJobbies

+0

GROUP BY 후에 ORDER BY 명령이 결과를 얻었으므로 uid로 그룹화 한 다음'created' 명령으로 그룹화하지만 그룹화 된 결과에는 최신 uid가 필요하지 않습니다. s – boobiq

+0

@boobiq - 죄송합니다. 내 검색어가 잘못 되었나요? – BigJobbies

0
SELECT uid 
    , MAX(created) AS max_created 
FROM tableX 
GROUP BY uid 
ORDER BY max_created DESC 
LIMIT 3 
관련 문제