질문:
최신 행의 PID를 어떻게 검색합니까? MAX()와 GROUP을 결합하는 MySQL 쿼리를 사용하여 테이블의 각 RID에 대해 BY?
샘플 데이터:
CREATE TABLE theTable ( `pid` INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, `timestamp` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, `cost` INT UNSIGNED NOT NULL, `rid` INT NOT NULL, ) Engine=InnoDB; INSERT INTO theTable (`pid`, `timestamp`, `cost`, `rid`) VALUES (1, '2011-04-14 01:05:07', 1122, 1), (2, '2011-04-14 00:05:07', 2233, 1), (3, '2011-04-14 01:05:41', 4455, 2), (4, '2011-04-14 01:01:11', 5566, 2), (5, '2011-04-14 01:06:06', 345, 1), (6, '2011-04-13 22:06:06', 543, 2), (7, '2011-04-14 01:14:14', 5435, 3), (8, '2011-04-14 01:10:13', 6767, 3) ;
원하는 결과:
pid | MAX(timestamp) | rid ----------------------------------- 5 | 2011-04-14 01:06:06 | 1 3 | 2011-04-14 01:05:41 | 2 7 | 2011-04-14 01:14:14 | 3
잘못됨 쿼리:
SELECT MAX(timestamp),rid,pid FROM theTable GROUP BY rid
이 쿼리는 최신 RID가 아닌 각 RID가 처음 나타나는 PID를 반환합니다.
올바른 쿼리:
각 RID에 대한 최신 행의 PID를 검색하려면 다음을 사용할 수 있습니다. 쿼리:
SELECT pid, MAX(timestamp) AS latest_timestamp, rid FROM theTable GROUP BY rid HAVING latest_timestamp = MAX(timestamp)
이 쿼리는 먼저 GROUP BY 절을 사용하여 RID 열을 기준으로 행을 그룹화합니다. 그런 다음 MAX() 함수를 사용하여 각 행 그룹의 최대 타임스탬프를 계산합니다. 마지막으로 HAVING 절을 사용하여 결과를 필터링하여 각 RID에 대해 최신 타임스탬프가 있는 행만 유지합니다.
위 내용은 MAX() 및 GROUP BY를 사용하여 MySQL에서 각 RID의 최신 PID를 얻는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!