2009-08-04 5 views
0

누군가가 테이블의 키 중 하나를 기준으로 그룹화하지만 상단에 최신 타임 스탬프가있는 방법을 알려주시겠습니까? 나는 데이터의 여러 행을 가지고 있지만 당신은 단지 그룹당 가장 최근 원한다면 난 단지 최신 행데이터의 최신 행을 표시하여 그룹을 사용하는 방법

+0

기본 키로 그룹화하면 기본 키가 정의에 따라 고유하므로 아무런 효과가 없습니다. –

+0

알아, 방금 내 글을 편집했습니다. 감사합니다 –

답변

1

을 보여주고 싶은 :

SELECT somefield 
FROM table t1 
WHERE timestamp = (SELECT MAX(timestamp) 
        FROM table t2 
        WHERE t1.somefield = t2.somefield); 

하거나 최신 가장 최근 :

SELECT somefield 
FROM table 
GROUP BY somefield 
ORDER BY MAX(timestamp) DESC 
LIMIT 1; 
+0

안녕하세요 도와 주셔서 감사합니다. 이미 게시 한 후에 실제로이 변경 사항을 반영하기 위해 실제로 내 게시물을 편집했습니다. 나는 아직도 몇 줄을 남기고있는 그룹화를하고있는 FK를 가지고있다. 최신 타임 스탬프로 제한해야합니다 –

+0

"제한 1"을 추가하면 그가 원하는 한 행만 가져옵니다. – jabbie

+0

** @ jabbie : ** 그는 그룹당 가장 최근의 것을 원합니다. 'LIMIT'는 당신을 도와주지 않습니다. 나의 마지막 예는 그것을 성취 할 것이다. –

1

나는 ORDER BY 절을 찾고 있다고 생각합니다.

SELECT Foo.Bar, Foo.SomeTimestamp 
FROM Foo 
ORDER BY Foo.SomeTimestamp DESC 

열을 기준으로 그룹화하는 경우 집계 데이터가 반환 될 수 있습니다. 타임 스탬프가 집계 데이터의 각 행에 대해 고유 한 경우 MAX 함수 (또는 이와 유사한 함수)를 사용하여 각 그룹에 대해 단일 타임 스탬프를 반환해야 할 수 있습니다. 이것은 대부분의 1 행에서 행 0 반환에서 시작

SELECT Foo.Bar, Foo.SomeTimestamp 
FROM Foo 
ORDER BY Foo.SomeTimestamp DESC 
LIMIT 0, 1 

예를 들어 : 당신은 단지 첫 번째 행을 원하는 경우

SELECT Foo.TypeID, SUM(Foo.Price) AS Price, MAX(Foo.OrderDate) AS LastOrder 
FROM Foo 
GROUP BY Foo.TypeID 
ORDER BY MAX(Foo.OrderDate) DESC 

, 당신은 LIMIT 절을 사용할 수 있습니다.

관련 문제