지금 각 카테고리에서 최신 콘텐츠를 제거 해야 합니다.
다음과 같이 코드 코드를 복사.
선택 * 테스트 그룹 '날짜' category_id 순서에 의해에서
결과 다음과 같습니다.
Obvious。 이것은 내가 원하는 있는 MSYQL를 실행 하는 순서는 때문에 데이터
참조
쓰기 순서: 선택...에서... 어디... 그룹...... 데 여.??
실행 순서:에서... 어디...... 그룹화 선택 데......
그래서 여 순서 결과 이미 그룹화의 최종 결과가입니다.
결과에서 어디는 다음과 같습니다.
시간 그룹, 우리 그룹 category_id 기반 수 얻을.
만 각 위의 그룹에서 첫 번째 메시지 다음에 발생 합니다 선택에 도착 하면
경우에 주문으로만 위의 결과에서 정렬 됩니다. 아니라 각 범주에 대 한 최신 정보입니다.
내 목적-카테고리에서 최신 정보를 다시
위의 분석만 소요 그룹에서 첫 번째 메시지를 선택 하 여 그룹화 합니다. 두 솔루션
1, 어디 + (정렬 그룹) 그룹
2, 손 및 발 (즉, 하위 쿼리)의 양식에서 데이터 반환
Where에 의해 솔루션 + 여 그룹
그 종류 나 그룹에 그룹만 찾을 Group_concat () 함수를 정렬할 수 있습니다, 하지만 Group_concat의 역할 그룹에 있는 필드의 값을 연결 하는 것입니다.
'테스트' 그룹에서에서 category_id Group_concat ('날짜' desc 주문 ID)를 선택
단지 조금 더입니다.
선택 *에서 어디에 ID '테스트' (Substring_index 선택 (Group_concat (ID 순으로 '날짜' desc), ',' ', 1) '테스트' 그룹에 의해 desc category_id) Order BY '날짜'
하위 쿼리 솔루션
선택 * FROM (선택 * "테스트 ' 주문 '" 날짜 '설명') '임시' category_id 순서 '날짜' 내림차순으로 그룹화
데이터 시트 구조
'테스트' (표 만들기
'ID' int (a) NOT NULL auto_increment
'이름' varchar (255) NOT NULL
'category_id' int (a) NOT NULL,
'날짜' 타임 스탬프 하지 null 기본 CURRENT_TIMESTAMP,
기본 키 (이 하 ' ID')
)
엔진 myisam =
Row_format = 기본;
INSERT INTO '테스트' ('id', '이름', 'category_id', '날짜')
값
(1, 'AAA' 1, ' 2010-06-10 19시 14분: 37 '),
(2, 'BBB'는, 2, ' 2010-06-10 19시 14분: 55 '),
(3, 'CCC' 1, ' 2010-06-10 19시 16분: 02 '),
(4, 'ddd' 1, ' 2010-06-10 19시 16분: 15 '),
(5, 'Eee', 2, ' 2010-06-10 19시 16분: 35 ');