> 데이터 베이스 > MySQL 튜토리얼 > 중복된 사진이 있는 여러 MySQL 테이블에서 고유한 음료 데이터를 선택하는 방법은 무엇입니까?

중복된 사진이 있는 여러 MySQL 테이블에서 고유한 음료 데이터를 선택하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-12-17 12:47:24
원래의
275명이 탐색했습니다.

How to Select Unique Drink Data from Multiple MySQL Tables with Duplicate Photos?

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

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