MySQL의 여러 테이블에서 고유한 결과 선택
MySQL에서 여러 테이블 간에 JOIN 작업을 수행할 때 중복 행이 발생할 수 있습니다. 결과 세트에서. 이는 다른 테이블의 단일 항목과 관련된 여러 행이 있는 테이블에서 데이터를 선택할 때 자주 발생합니다.
문제 설명
다음 예를 고려하세요.
SELECT name, price, photo FROM drinks, drinks_photos WHERE drinks.id = drinks_id;
이 쿼리는 drink 및 drink_photos 테이블에서 각 음료의 이름, 가격 및 사진을 검색하려고 시도합니다. 그러나 단일 음료와 관련된 여러 사진이 있을 수 있으므로 각 음료에 대해 중복 행이 생성됩니다.
해결책
중복을 제거하고 각 음료만 표시되도록 하려면 일단 그룹화 메커니즘을 통합해야 합니다. MySQL은 이를 달성하기 위한 여러 가지 방법을 제공합니다.
그룹화 및 집계 사용
한 가지 옵션은 GROUP BY 절을 사용하여 고유한 음료를 기반으로 결과를 그룹화하고 적용하는 것입니다. 원하는 열 값을 선택하는 집계 함수:
SELECT name, price, photo FROM drinks, drinks_photos WHERE drinks.id = drinks_id GROUP BY drinks_id;
이 쿼리에서 drink_id는 그룹화 역할을 합니다. 열을 사용하여 결과에 고유한 음료만 포함되도록 합니다. 또한 각 음료에 대한 사진이 여러 장 있으므로 표시할 사진을 지정해야 합니다. 이 예에서는 photo가 사용되었지만 MIN(photo) 또는 MAX(photo)로 대체하여 각각 오름차순 또는 내림차순으로 첫 번째 또는 마지막 사진을 검색할 수 있습니다.
GROUP_CONCAT 사용
또는 MySQL은 여러 값을 단일 값으로 연결하는 데 사용할 수 있는 GROUP_CONCAT 함수를 제공합니다. 문자열:
SELECT name, price, GROUP_CONCAT(photo) FROM drinks, drinks_photos WHERE drinks.id = drinks_id GROUP BY drinks_id;
이 쿼리는 각 음료와 관련된 모든 사진의 이름, 가격 및 쉼표로 구분된 목록을 검색합니다.
참고:
연결되는 값이 클 경우 GROUP_CONCAT을 사용하면 성능 오버헤드가 발생할 수 있다는 점에 유의하는 것이 중요합니다. 또한 값 자체 내에 있을 수 있는 구분 문자에 주의하세요.
위 내용은 중복된 사진이 있는 여러 MySQL 테이블에서 고유한 음료 데이터를 선택하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!