집 >데이터 베이스 >MySQL 튜토리얼 >공유 열을 기반으로 가장 최근의 고유한 레코드 ID 3개를 어떻게 찾을 수 있습니까?
가장 최근의 고유 레코드 ID는 무엇입니까?
특정 데이터베이스 테이블에서 특정 레코드는 공유 열로 상호 연결됩니다. 목표는 이 공유 열 값과 연결된 가장 최근의 세 가지 고유 레코드 식별자를 식별하는 것입니다.
이를 달성하려면 아래 샘플 테이블을 고려하세요.
id | time | text | otheridentifier |
---|---|---|---|
1 | 6 | apple | 4 |
2 | 7 | orange | 4 |
3 | 8 | banana | 3 |
4 | 9 | pear | 3 |
5 | 10 | grape | 2 |
처음에는 직관적인 접근 방식이 otheridentifier 열을 기준으로 그룹화한 후 시간 내림차순으로 정렬해야 합니다. 그러나 이 방법은 원하는 결과를 얻지 못합니다.
SELECT * FROM `table` GROUP BY (`otheridentifier`) ORDER BY `time` DESC LIMIT 3;
이 쿼리에는 올바른 ID 4와 2 대신 ID 3과 1의 레코드가 실수로 포함됩니다. 이러한 불일치의 원인은 쿼리 실행에 있습니다. 순서: 그룹화가 순서보다 우선합니다.
의도한 결과를 얻으려면 더 복잡한 솔루션이 필요합니다. 필수:
SELECT * FROM `table` WHERE `id` = ( SELECT `id` FROM `table` as `alt` WHERE `alt`.`otheridentifier` = `table`.`otheridentifier` ORDER BY `time` DESC LIMIT 1 ) ORDER BY `time` DESC LIMIT 3;
이 수정된 쿼리는 하위 쿼리를 활용하여 각 otheridentifier 값에 대한 최신 시간 값이 있는 단일 ID를 선택합니다. 이 최적화된 쿼리는 고유 레코드 식별자 5, 4, 2의 원하는 출력을 보장합니다.
위 내용은 공유 열을 기반으로 가장 최근의 고유한 레코드 ID 3개를 어떻게 찾을 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!