MySQL의 여러 필드에서 \'SELECT DISTINCT\'가 실패하는 이유는 무엇입니까?

Linda Hamilton
풀어 주다: 2024-11-03 00:30:29
원래의
370명이 탐색했습니다.

Why Does

Mysql 최적화: "SELECT DISTINCT" 제한 이해

MYSQL에서 "SELECT DISTINCT" 절은 다음을 기반으로 중복 행을 제거하는 데 사용됩니다. 지정된 열 값. 그러나 여러 필드를 선택하려고 하면 발생할 수 있는 특정 제한 사항이 있습니다.

문제:

"SELECT DISTINCT" 뒤에 쉼표로 구분된 목록을 사용하는 경우 다음 예와 같이 필드와 또 다른 "DISTINCT" 절을 사용하면 오류가 발생합니다.

mysql_query("SELECT *, DISTINCT ticket_id FROM temp_tickets ORDER BY ticket_id")
로그인 후 복사

설명:

개인에 적용되는 함수와 달리 열에서 "DISTINCT"는 선택 목록의 모든 열에 영향을 미치는 쿼리 수정자입니다. 선택 항목의 모든 열에 동일한 값이 있는 경우에만 중복을 제거합니다.

따라서 쿼리는 쉼표로 구분된 목록과 "ticket_id"에 지정된 열을 포함하여 모든 열을 기준으로 구별되는 행을 출력하려고 시도합니다. 어떤 열이 고유성을 고려해야 하는지 불분명하므로 이로 인해 모호성이 발생합니다.

해결책:

"ticket_id"를 기준으로 모든 필드를 선택하고 중복 항목을 제거하려면 올바른 구문은 다음과 같습니다.

SELECT DISTINCT *, ticket_id FROM temp_tickets ORDER BY ticket_id
로그인 후 복사

이 쿼리는 "ticket_id"를 포함한 모든 열의 결합된 값을 기반으로 중복 항목을 제거합니다. 그러나 각 고유 "ticket_id" 값에 대한 최신 항목만 표시됩니다. 모든 열의 최신 항목만 검색하려면 다음과 같이 하위 쿼리를 사용하여 각 "ticket_id" 값에 대한 최대 ticket_id를 선택할 수 있습니다.

SELECT * FROM temp_tickets WHERE ticket_id IN (SELECT MAX(ticket_id) FROM temp_tickets GROUP BY ticket_id)
로그인 후 복사

위 내용은 MySQL의 여러 필드에서 \'SELECT DISTINCT\'가 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿