MySQL 테이블에서 최신 레코드를 검색하는 방법
시간에 민감한 데이터를 MySQL 테이블에 저장할 때 다음이 필요한 경우가 많습니다. 특정 필드 조합에 대한 최신 레코드를 검색합니다. 다음 예에서는 타임스탬프, 메서드, ID 등의 필드가 포함된 RPC 응답 테이블을 처리할 때 이를 달성하는 방법을 보여줍니다.
질문
rpc_responses는 다음 구조를 갖습니다:
CREATE TABLE rpc_responses ( timestamp DATE, method VARCHAR, id VARCHAR, response MEDIUMTEXT, PRIMARY KEY (timestamp, method, id) );
다음과 같은 경우 데이터:
timestamp | method | id | response |
---|---|---|---|
2009-01-10 | getThud | 16 | "....." |
2009-01-10 | getFoo | 12 | "....." |
2009-01-10 | getBar | 12 | "....." |
2009-01-11 | getFoo | 12 | "....." |
2009-01-11 | getBar | 16 | "....." |
원하는 결과
모든 기존 메소드 및 ID 조합에 대한 가장 최근 응답 목록 가져오기:
timestamp | method | id | response |
---|---|---|---|
2009-01-10 | getThud | 16 | "....." |
2009-01-10 | getBar | 12 | "....." |
2009-01-11 | getFoo | 12 | "....." |
2009-01-11 | getBar | 16 | "....." |
답변
성취하려면 이를 위해서는 다음 쿼리를 활용하세요.
SELECT * FROM ( SELECT *, IF(@last_method = method, 0, 1) AS new_method_group, @last_method := method FROM rpc_responses ORDER BY method, timestamp DESC ) AS t1 WHERE new_method_group = 1;
이 쿼리는 조인 없이도 원하는 결과를 효율적으로 검색합니다. 또한 원하는 행 구조를 유지하여 메소드와 ID의 고유한 조합마다 고유한 레코드를 제공합니다.
위 내용은 MySQL에서 각 방법 및 ID 조합에 대한 최신 레코드를 선택하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!