본문 바로가기
MySql

MySQL의 필드에서 첫 번째 일치 항목 만 선택하려면 어떻게해야합니까?

by 베이스 공부 2021. 1. 12.
반응형

MySQL에서 필드의 첫 번째 고유 일치 만 반환 할 수있는 방법은 무엇입니까?

내 테이블 :

name     hash
----------------
Anna     ABC
Barb     DEF
Charlie  GHI
Anna     JKL
Andrea   MNO

내 쿼리 ( % An % 용) :

SELECT DISTINCT(name) as name, hash FROM my_table WHERE name LIKE '%An%';

다음을 반환합니다.

name     hash
----------------
Anna     ABC
Anna     JKL
Andrea   MNO

대신 : (내가 추구하는 결과)

name     hash
----------------
Anna     ABC
Andrea   MNO

각 고유 한 이름의 첫 번째 일치 만 얻을 수있는 방법은 무엇입니까?

첫 번째 Anna 를 반환하고 두 번째 (및 후속 일치 항목)를 건너 뛰지 만 여전히 Andrea (및 Andrew 와 같은 추가 고유 일치 항목)를 얻습니다. code> 또는 Anthony ).

 

해결 방법

 

DISTINCT 는 이러한 방식으로 작동하지 않으며 값은 반환되는 모든 열에서 구별되어야합니다.

hash 함수 및 GROUP BY name 에 항상 집계 함수를 사용할 수 있으며, 이는 각 name hash 값을 반환합니다. 코드> :

SELECT name, min(hash) hash
FROM my_table 
WHERE name LIKE '%An%' 
GROUP BY name;



MySQL 문서에서 :

MySQL은 선택 목록이 GROUP BY 절에 명명되지 않은 집계되지 않은 열을 참조 할 수 있도록 GROUP BY 사용을 확장합니다. ...이 기능을 사용하면 불필요한 열 정렬 및 그룹화를 방지하여 더 나은 성능을 얻을 수 있습니다. 그러나 이는 주로 GROUP BY에 이름이 지정되지 않은 각 집계되지 않은 열의 모든 값이 각 그룹에 대해 동일한 경우에 유용합니다. 서버는 각 그룹에서 값을 자유롭게 선택할 수 있으므로 동일하지 않으면 선택한 값이 결정되지 않습니다. 또한 각 그룹의 값 선택은 ORDER BY 절을 추가하여 영향을받을 수 없습니다. 결과 집합의 정렬은 값이 선택된 후에 발생하며 ORDER BY는 서버가 선택하는 값에 영향을주지 않습니다.

 

참조 페이지 https://stackoverflow.com/questions/15010763

 

 

반응형

댓글