2012-09-04 6 views
1

여기 가짜 테스트입니다 (아이디는 내가 잊어 버렸습니다). 각 그룹 id에 가장 높은 grp를 반환하는 하나의 쿼리를 작성하고 싶습니다. 이 경우 마지막 행을 삭제하지 않는 한 마지막 2 행입니다. 그런 다음 마지막 행과 두 번째 행이됩니다. 어쨌든 내가 어떻게 w/난 하위 쿼리를 작성하는 방법을 잊었 하위 쿼리와의 오랜만를 사용하여 O를 쿼리를 작성하는 아무 생각이 없다 (오른쪽 좋은 일 이잖아?)를mysql에서 최신 그룹을 얻으려면 어떻게해야합니까?

CREATE TABLE example (gid INT, grp INT, data VARCHAR(100)); 
-- 
mysql> select * from example; 
+------+------+------+ 
| gid | grp | data | 
+------+------+------+ 
| 1 | 1 | a | 
| 1 | 2 | a | 
| 2 | 1 | a | 
| 2 | 2 | a | 
| 1 | 5 | a | 
+------+------+------+ 

답변

2
select gid,max(grp)as 'higest_grp' from example group by gid 
+0

나는 이것이 옳다고 생각하지 않습니다. 그룹에서 첫 번째 gid를 반환하고 최대 gid는 반환하지 않습니다. – Gustonez

+0

위 예제를 사용하여 'example'테이블을 생성 한 후 데이터를 삽입하기 위해 다음과 같은 쿼리를 사용합니다. \t (1, 2 ', A'), \t (2,1 ', A'), \t (2, 2 ', A'), \t (1,5 ', A'); 그런 다음 내 위 쿼리를 실행하십시오. –

+0

@Gustonez 저에게 맞습니다. –

2
SELECT gid, MAX(grp) FROM example GROUP BY gid 
0

각 행에 대해 올바른 data을 검색하는 올바른 방법이라고 생각합니다.

SELECT `gid`, `grp`, `data` FROM `example` 
WHERE `grp` IN (SELECT MAX(t2.`grp`) FROM `example` t2 GROUP BY `gid`) 
GROUP BY `gid` 
관련 문제