2012-03-09 6 views
-2

누군가가 나를 도울 수 있는지 궁금합니다. 나는 내 사이트에 이미지를 업로드 수백명의 사람들이 기본적으로 각각의 업로드가 생성 된 데이터, 사용자 ID와 데이터베이스에 자신의 행이 있습니다MySQL 쿼리 - 별개의 잘못된 결과 표시

, 이미지 등은 내가 뭘 원하는 것은 디스플레이가

등이다 등의 이름 마지막 3 명의 사용자가 이미지를 업로드 할 때 사용자가 더 많은 사진을 업로드하면 그 사용자 ID로 다른 행이 데이터베이스에 추가되므로 마지막 3 행만 표시 할 수 있습니다.

나는 다음과 같은 문이 있지만 메신저 잘못가는 곳 누군가가 저를 지적 수 있는지 궁금

SELECT DISTINCT * FROM kicks GROUP BY uid ORDER BY created DESC LIMIT 3 

제대로 작동있을 것 같지 않습니다.

건배

미안 해요, 내가 추가해야 샘플 데이터, 확인

ID | uid | 만든 |

195 | 33 | 2012-03-06 12:32:54
196 | 33 | 2012-03-06 12:35:23
197 | 34 | 2012-03-06 13:09:31
198 | 19 | 2012-03-08 10:37:21
199 | 33 | 2012-03-09 21:04:04

+0

DISTINCT는 예상대로 전체 행에 적용됩니다. 마지막 3을 적용하는 방법에 대해보다 명확하게 설명 할 수 있습니까? SQL은 사소하지만 실제로 의미하는 바에 달려 있습니다 ... – gbn

+0

uid는 사용자 ID 또는 킥을위한 고유 키입니까? 어떤 데이터를 반환 하시겠습니까? – kaj

답변

4

SELECT DISTINCT uid FROM kicks ORDER BY created DESC LIMIT 3은 원하는 것입니다.

SELECT * FROM kicks WHERE uid IN (
    SELECT DISTINCT uid FROM kicks ORDER BY created DESC 
) LIMIT 3 

또는 열이 auto_incremented 귀하의 ID 경우, 그것에 의해 주문하려고 :

+0

이 작업이 없습니다 – BigJobbies

+1

시도해 보셨습니까? 이것은 꽤 솔직하며 99 % 확신합니다. 함께 작업 할 샘플 데이터를 제공하십시오. – slash197

+0

이것은 * "이미지를 업로드 할 마지막 3 명의 사용자"*를 표시합니다. –

0

이 시도

SELECT * FROM kicks WHERE uid IN (
    SELECT DISTINCT uid FROM kicks ORDER BY id DESC 
) LIMIT 3 
+0

이 작업은 나던가 ... 'created'필드가 datetime이라는 것이 중요합니까? – BigJobbies

+0

아니요, 그건 중요하지 않습니다. 쇼 만들기 테이블 킥을 게시 해주십시오. – rkosegi

+0

샘플 데이터로 내 질문을 업데이트했습니다. – BigJobbies

0

데이터베이스에 고유 ID 필드가, 그래서 새 행이있을 것이다 SELECT *를 사용하는 경우 모든 필드가 구별되므로 DISTINCT는 중복되는 새로운 고유 ID입니다.

왜 * 모든 분야가 서로 다른 의미하여, 내가 말처럼

SELECT DISTINCT uid FROM kicks 
ORDER BY created 
DESC LIMIT 3 

뭔가를하려고하지.

e : 필드 선택 방법을 이해하는 데 도움이되는 데이터베이스 구조에 대한 자세한 정보를 제공해야 할 수도 있습니다.

0

쿼리에 문제가 없습니다. 유일한 문제는 사용자별로 그룹화 할 때 MAX()와 같은 함수를 사용하여 사용자에게 가장 큰 업로드 시간을 출력해야한다는 것입니다. 나는 당신에게 비슷한 데이터로 작업하게했다. 이 쿼리 결과에 열 "최신"를 추가합니다

SELECT uid, MAX(created) as latest FROM kicks GROUP BY uid ORDER BY created DESC LIMIT 3 

:

는 라인 같은 것을보십시오)

당신이 필요로하는 경우, 고유 ID 행을 표시 할 수 있습니다 내 버전 어떤 이유로 그럴 필요는 없지만 수용된 DISTINCT 버전이 더 깨끗하다고 ​​생각합니다.