>데이터 베이스 >MySQL 튜토리얼 >공유 열을 기반으로 가장 최근의 고유한 레코드 ID 3개를 어떻게 찾을 수 있습니까?

공유 열을 기반으로 가장 최근의 고유한 레코드 ID 3개를 어떻게 찾을 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-29 16:06:13359검색

How Can I Find the Three Most Recent Distinct Record IDs Based on a Shared Column?

가장 최근의 고유 레코드 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.