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 중국어 웹사이트의 기타 관련 기사를 참조하세요!