문제:
유사한 쿼리를 사용하여 MySQL 테이블의 각 그룹에 대한 마지막 행 대상:
select * from foo as a where a.id = (select max(id) from foo where uid = a.uid group by uid) group by uid;
잠재적 해결 방법:
다음 대체 쿼리를 고려하세요.
SELECT t1.* FROM foo t1 LEFT JOIN foo t2 ON t1.id < t2.id AND t1.uid = t2.uid WHERE t2.id is NULL;
설명:
이 쿼리는 Left를 기준으로 테이블의 각 행을 후속 행과 조인합니다. ID 열. 후속 항목이 없으면(즉, 그룹의 마지막 행인 경우) t2.id 열은 NULL이 됩니다. NULL을 필터링하여 각 그룹의 마지막 행을 효과적으로 격리합니다.
추가 참고 사항:
EXLAIN을 사용하여 원래 쿼리의 쿼리 성능과 대체 쿼리를 분석합니다. 솔루션.
이 방법은 대규모 데이터 세트와 복잡한 그룹화에 특히 유용합니다. 더 간단한 경우에는 다른 접근 방식이 더 효율적일 수 있습니다.
위 내용은 MySQL에서 그룹당 마지막 행을 효율적으로 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!