>데이터 베이스 >MySQL 튜토리얼 >모든 필드를 선택할 때 MySQL \'SELECT DISTINCT\'에서 오류가 발생하는 이유는 무엇입니까?

모든 필드를 선택할 때 MySQL \'SELECT DISTINCT\'에서 오류가 발생하는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-03 19:11:291029검색

Why Does MySQL

MySQL "SELECT DISTINCT" 딜레마

MySQL 데이터베이스 관리에서 "SELECT DISTINCT"는 데이터베이스에서 중복 행을 제거하는 데 사용되는 쿼리 수정자입니다. 결과 집합. 그러나 고유한 값과 함께 테이블의 모든 필드를 선택하려고 하면 일반적인 문제가 발생합니다.

SELECT DISTINCT ticket_id FROM temp_tickets ORDER BY ticket_id 쿼리는 고유한 ticket_id 값만 효과적으로 검색합니다. 그러나 쿼리를 SELECT * , DISTINCT ticket_id FROM temp_tickets ORDER BY ticket_id로 확장하면 "DISTINCT"의 잘못된 배치로 인해 오류가 발생합니다.

올바른 구문

"DISTINCT"는 쿼리문에서 "SELECT" 바로 뒤에 위치해야 합니다. 올바른 구문은 다음과 같습니다.

SELECT DISTINCT ticket_id, OTHER_COLUMN1, OTHER_COLUMN2, ... FROM temp_tickets ORDER BY ticket_id

이 구문에서 "DISTINCT"는 정렬(ORDER BY)에 사용되는 열을 포함하여 선택 목록에 나열된 모든 열에 적용됩니다. 따라서 쿼리는 나열된 열에 있는 각각의 고유한 값 조합에 대해 고유한 행을 반환합니다.

논리적 설명

"DISTINCT"는 다음 열의 모든 열이 중복되는 행을 제거합니다. 선택 목록의 값은 동일합니다. 즉, 다른 열에 다른 값이 포함되어 있으면 해당 행은 고유한 것으로 간주되어 결과 집합에 포함됩니다.

잘못된 구문 SELECT foo, DISTINCT ticket_id FROM table...에서 쿼리가 모호합니다. 어떤 행을 제거해야 하는지 결정하는 방법이 불분명하기 때문입니다. ticket_id에 3개의 고유 값이 있고 foo에 6개의 고유 값이 있는 경우 고유 ticket_id 값과 함께 foo의 3개 값이 출력되어야 하는지가 명확하지 않습니다. "SELECT" 바로 뒤에 "DISTINCT"를 배치하면 쿼리가 명확해지고 모호함이 사라집니다.

위 내용은 모든 필드를 선택할 때 MySQL \'SELECT DISTINCT\'에서 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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