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