ARRAY_DISTINCT
ARRAY_DISTINCT
입력 ARRAY에서 고유한 요소만 담은 새 ARRAY를 반환하는 함수예요. 입력 ARRAY에 있는 중복 요소를 제외합니다.
본문
이 함수는 ARRAY의 요소를 특정 순서로 반환한다고 보장하지 않아요. NULL-safe라서 중복 요소를 식별할 때 NULL을 알려진 값으로 취급해요.
ARRAY_DISTINCT( <array> )
<array> — 제거할 중복 요소가 있을 수 있는 배열이에요.
입력 배열의 요소에서 중복을 뺀 ARRAY를 반환해요. 예를 들어 입력 ARRAY에서 값 'x'가 여러 번 나오면 반환된 ARRAY에는 값이 'x'인 요소가 하나만 있어요. 입력 인자가 NULL이면 NULL을 반환해요. 반환된 배열 안의 값 순서는 지정되지 않아요.
사용 메모
- OBJECT 타입 요소의 경우, 객체가 동일해야 중복으로 간주돼요.
- 중복 요소를 식별할 때 NULL을 알려진 값으로 취급해요(즉 NULL은 NULL 외의 다른 값 X의 중복이 아님).
예시 — 중복 요소 A와 NULL을 제거:
SELECT ARRAY_DISTINCT(['A', 'A', 'B', NULL, NULL]);
+---------------------------------------------+
| ARRAY_DISTINCT(['A', 'A', 'B', NULL, NULL]) |
|---------------------------------------------|
| [ |
| "A", |
| "B", |
| undefined |
| ] |
+---------------------------------------------+
중복 OBJECT를 제거하는 예시예요. b 값이 3(다른 값)인 마지막 요소는 중복으로 간주되지 않아요.
SELECT ARRAY_DISTINCT( [ {'a': 1, 'b': 2}, {'a': 1, 'b': 2}, {'a': 1, 'b': 3} ] );
+----------------------------------------------------------------------------+
| ARRAY_DISTINCT( [ {'A': 1, 'B': 2}, {'A': 1, 'B': 2}, {'A': 1, 'B': 3} ] ) |
|----------------------------------------------------------------------------|
| [ |
| { |
| "a": 1, |
| "b": 2 |
| }, |
| { |
| "a": 1, |
| "b": 3 |
| } |
| ] |
+----------------------------------------------------------------------------+