작성하기 가장 쉬운 쿼리는 엄격한 ANSI 설정이 아닌 MySQL에 대한 것입니다. 비표준 구성을 사용합니다.
SELECT key, value
FROM tableX
GROUP BY key ;
엄격한 설정 ONLY_FULL_GROUP_BY
이 기본값 인 최신 버전 (5.7 및 8.0+)에서는 ANY_VALUE()
5.7에 추가 된 기능을 사용할 수 있습니다 .
SELECT key, ANY_VALUE(value) AS value
FROM tableX
GROUP BY key ;
Postgres, SQL-Server, Oracle, DB2와 같은 창 기능이있는 다른 DBMS의 경우 이와 같이 사용할 수 있습니다. 장점은 결과에서 다른 열을 선택할 수도 있다는 것입니다 ( key
및 value
).
SELECT key, value
FROM tableX
( SELECT key, value,
ROW_NUMBER() OVER (PARTITION BY key
ORDER BY whatever) --- ORDER BY NULL
AS rn --- for example
FROM tableX
) tmp
WHERE rn = 1 ;
위의 이전 버전과 다른 DBMS의 경우 거의 모든 곳에서 작동하는 일반적인 방법입니다. 이 방법으로는 다른 열을 선택할 수 없다는 단점이 있습니다. 또 같은 그 집계 함수입니다 MIN()
및 MAX()
(비트, 텍스트, 모양 같은) 일부의 DBMS에서 일부 데이터 유형과 일을하지 :
SELECT key, MIN(value) AS value
FROM tableX
GROUP BY key ;
PostgreSQL에는 사용할 수있는 특수한 비표준 DISTINCT ON
연산자가 있습니다. 선택 사항 ORDER BY
은 모든 그룹에서 어떤 행을 선택해야하는지 선택하는 것입니다.
SELECT DISTINCT ON (key) key, value
FROM tableX
-- ORDER BY key, <some_other_expressions> ;