2011-01-12 5 views
0

안녕하세요. 내가 해결할 수없는 작은 문제를 가지고, 그것은Mysql의 날짜순으로 그룹화하여 그룹화

| id | idcat | name |  date | 

| 1 | 3  | xx | 2011-01-02 | 

| 2 | 4  | xf | 2011-01-02 | 

| 3 | 3  | cd | 2011-01-01 | 

| 4 | 1  | cg | 2011-01-04 | 

| 5 | 4  | ce | 2011-01-06 | 

가 머무르고 싶은 것 (하지만 난 단지 idCAT 당 1 개 행을 표시) 나는이 표를 가지고 있고, 나는 날짜와 그룹을 기준으로 정렬 할 그 방법은 방법으로 시도하지만 ID


감사의 한 친구에 의해하지

| 2 | 4  | xf | 2011-01-02 | 

| 3 | 3  | cd | 2011-01-01 | 

| 4 | 1  | cg | 2011-01-04 | 

주문 수 일.

 
SELECT id, idcat, name, date FROM (SELECT * FROM data ORDER BY idcat, date) m GROUP BY idcat 

+0

원하는 결과를 얻으려면 어떤 논리를 사용하고 있습니까? '2011-01-01'은 소스 데이터에서'2, 4, xf'와 같은 행에 없습니다. –

+0

나는 그 논리를 이해하지 못합니까? – Alexd2

+0

죄송합니다, is 2 | 4 | xf | 2011 년 1 월 2 일 – Alexd2

답변

1

나는 편리 기압 테스트,하지만이 시도 할 수 없습니다

SELECT FIRST(id), idcat, FIRST(name), FIRST(date) AS d FROM myTable GROUP BY idcat ORDER BY d; 

참고는 FIRST의 사용은 특정 idcat와 테이블의 첫 번째 행을 선택하는 호출합니다.

+0

더 자세한 행이 필요하다면, 각 idcat에서 가장 최근의 것과 같이, 다음과 같이 조금 더 할 필요가 있습니다 : SELECT FIRST (id), idcat, FIRST (name), FIRST (date) d FROM SELECT * FROM myTable ORDER BY 날짜 DESC) idcat ORDER BY d; idcat 당 가장 오래된 항목에 대해 DESC를 ASC로 변경하십시오. –

-1

당신이 idcat에 의해 그룹을 얻으려고 노력하는 경우, 날짜별로 정렬 : 날짜 별 idcat 순서로 myTable에 그룹에서

선택 아이디, idcat, 이름, 날짜;

+0

그것은 작동하지 않습니다, 그것을 시도한 다음 그것을 가져오고 주문하기 전에 이상적으로 그룹화합니다. – Alexd2

+0

먼저 idcat에 따라 날짜를 정렬해야하며 가장 오래된 것을 선택하고 패키지하여 각 idcat에 대한 가장 오래된 반환 – Alexd2

+0

흠, 훨씬 더 열심히, 나는 당신의 딜레마를 참조하십시오. 내가 너를 이해한다면 각 idcat 중 가장 오래된 것의 목록을 날짜순으로 나열하고 싶다. –

관련 문제