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
'MySql' 카테고리의 다른 글
MySQL Excel 용 mysql (0) | 2021.01.12 |
---|---|
MySQL 데이터베이스에 255 자 이상을 저장하는 방법은 무엇입니까? (0) | 2021.01.12 |
MySQL 단일 프로 시저에서 여러 선택 쿼리를 작성하는 방법은 무엇입니까? (0) | 2021.01.12 |
MySQL cakephp db에서 데이터 가져 오기 (0) | 2021.01.12 |
MySQL PHP mysqli-준비된 명령문에서 연관 배열 반환 (0) | 2021.01.12 |
댓글