my sql"group by"와"orderby"의 연구-분류 에서 최신 내용

3962 단어 group byorder by
요 며칠 동안 데이터 조 회 를 어렵 게 했다.주로 group by 에 대한 이해 가 깊 지 않 습 니 다.이런 상황 이 생 긴 것 같 습 니 다.이런 요 구 는 많은 사람들 이 겪 었 다 고 생각 합 니 다.다음은 제 가 시 뮬 레이 션 한 내용 표

CREATE TABLE `test` (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL,
`category_id` INT(10) NOT NULL,
`date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
)
ENGINE=MyISAM
ROW_FORMAT=DEFAULT;
INSERT INTO `test` (`id`, `name`, `category_id`, `date`)
VALUES
(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');
입 니 다.저 는 지금 각 분류 에서 최신 내용 을 꺼 내야 합 니 다.

select * from test group by category_id order by `date`
결 과 는 다음 과 같다.이것 은 내 가 원 하 는 데이터 가 아니 라 msyql 의 실행 순서 가
인용 하 다.
쓰 는 순서:select...from...where...group by...having..order by..실행 순서:from..where..group by..having...select..order by..그래서 order by 가 받 은 결과 에 서 는 이미 조 를 나 눈 마지막 결과 입 니 다.from 에서 where 까지 의 결 과 는 다음 과 같다.group by 에 도착 하면 categoryid 가 분 류 된 여러 그룹이 select 에 도 착 했 을 때 위의 각 그룹 에서 만 첫 번 째 정 보 를 얻 는 결 과 는 다음 과 같다.order by 라 도 위의 결과 에서 만 정렬 된다.각 분류의 최신 정 보 는 아니다.나의 목적 으로 돌아 가기-분류 에서 최신 정 보 는 위의 분석 에 따라 group by 에서 select 까지 그룹 에 있 는 첫 번 째 정보 만 가 져 옵 니 다.두 가지 해결 방법 이 있 습 니 다.1.where+group by(그룹 정렬)2.form 에서 돌아 온 데이터 에서 손발(즉,하위 조회)은 where+group by 의 해결 방법 으로 group by 의 그룹 을 정렬 하 는 함수 만 찾 았 습 니 다.groupconcat()정렬 은 가능 하지만 groupconcat 의 역할 은 그룹의 필드 에 있 는 값 을 연결 하 는 것 입 니 다.
select group_concat(id order by `date` desc) from `test` group by category_id다시 개선
select * from `test` where id in(select SUBSTRING_INDEX(group_concat(id order by `date` desc),',',1) from `test` group by category_id)order by`date`desc하위 조회 솔 루 션
select * from (select * from `test` order by `date` desc) `temp`  group by category_id order by `date` desc

좋은 웹페이지 즐겨찾기