์นดํ…Œ๊ณ ๋ฆฌ:

๋ฐ˜์ •ํ˜• ๋ฐ ์ •ํ˜• ๋ฐ์ดํ„ฐ ํ•จ์ˆ˜ (๋ฐฐ์—ด/์˜ค๋ธŒ์ ํŠธ)

ARRAY_DISTINCTยถ

์ž…๋ ฅ ARRAY ์—์„œ ๊ณ ์œ ํ•œ ์š”์†Œ๋งŒ ํฌํ•จ๋œ ์ƒˆ ARRAY๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ์ž…๋ ฅ ARRAY์— ์žˆ๋Š” ๋ชจ๋“  ์ค‘๋ณต ์š”์†Œ๋ฅผ ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค.

์ด ํ•จ์ˆ˜๋Š” ํŠน์ • ์ˆœ์„œ๋กœ ARRAY์˜ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค๊ณ  ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ํ•จ์ˆ˜๋Š” NULL์— ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ค‘๋ณต ์š”์†Œ๋ฅผ ์‹๋ณ„ํ•  ๋•Œ NULL์„ ์•Œ๋ ค์ง„ ๊ฐ’์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

๊ตฌ๋ฌธยถ

ARRAY_DISTINCT( <array> )
Copy

์ธ์žยถ

array

์ œ๊ฑฐํ•  ์ค‘๋ณต ์š”์†Œ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜ยถ

์ด ํ•จ์ˆ˜๋Š” ์ค‘๋ณต ์š”์†Œ ์—†์ด ์ž…๋ ฅ ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ํฌํ•จํ•˜๋Š” ARRAY๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฐ’ 'x' ๊ฐ€ ์ž…๋ ฅ ARRAY์— ์—ฌ๋Ÿฌ ๋ฒˆ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒฝ์šฐ ๋ฐ˜ํ™˜๋˜๋Š” ARRAY์—์„œ ํ•œ ์š”์†Œ์—๋งŒ ๊ฐ’ 'x' ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž…๋ ฅ ์ธ์ž๊ฐ€ NULL์ธ ๊ฒฝ์šฐ ์ด ํ•จ์ˆ˜๋Š” NULL์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜๋œ ๋ฐฐ์—ด ๋‚ด ๊ฐ’์˜ ์ˆœ์„œ๋Š” ์ง€์ •๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ๋ฒ• ๋…ธํŠธยถ

  • OBJECT ์œ ํ˜•์˜ ์š”์†Œ์— ๋Œ€ํ•ด, ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์ค‘๋ณต์œผ๋กœ ๊ฐ„์ฃผ๋˜๋ ค๋ฉด ๋™์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด ํ•ญ๋ชฉ์— ์žˆ๋Š” ์˜ˆ ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

  • ์ค‘๋ณต ์š”์†Œ๋ฅผ ์‹๋ณ„ํ•  ๋•Œ ํ•จ์ˆ˜๋Š” NULL ์„ ์•Œ๋ ค์ง„ ๊ฐ’์œผ๋กœ ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค(์ฆ‰, NULL ์€ NULL ์ด์™ธ์˜ ๋‹ค๋ฅธ ๊ฐ’ X์™€ ์ค‘๋ณต๋˜์ง€ ์•Š์Œ).

์˜ˆยถ

๋‹ค์Œ ์˜ˆ์ œ์—์„œ๋Š” ํ•จ์ˆ˜๊ฐ€ ์ž…๋ ฅ ARRAY ์ƒ์ˆ˜ ์—์„œ ์ค‘๋ณต ์š”์†Œ A ์™€ NULL ์—†์ด ARRAY๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

SELECT ARRAY_DISTINCT(['A', 'A', 'B', NULL, NULL]);

+---------------------------------------------+
| ARRAY_DISTINCT(['A', 'A', 'B', NULL, NULL]) |
|---------------------------------------------|
| [                                           |
|   "A",                                      |
|   "B",                                      |
|   undefined                                 |
| ]                                           |
+---------------------------------------------+
Copy

๋‹ค์Œ ์˜ˆ์ œ์—์„œ๋Š” ARRAY ๋Œ€์‹  NULL ์„ ์ „๋‹ฌํ•˜๋ฉด NULL์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

SELECT ARRAY_DISTINCT(NULL);

+----------------------+
| ARRAY_DISTINCT(NULL) |
|----------------------|
| NULL                 |
+----------------------+
Copy

๋‹ค์Œ ์˜ˆ์ œ์—์„œ๋Š” ํ•จ์ˆ˜๊ฐ€ ์ž…๋ ฅ ARRAY์˜ ์š”์†Œ์ธ ์ค‘๋ณต OBJECT๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ด ์˜ˆ์ œ์—์„œ๋Š” OBJECT ์ƒ์ˆ˜ ๋ฐ ARRAY ์ƒ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ OBJECT์™€ ARRAY๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

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                                                                 |
|   }                                                                        |
| ]                                                                          |
+----------------------------------------------------------------------------+
Copy

์ด ์˜ˆ์ œ์— ํ‘œ์‹œ๋œ ๊ฒƒ์ฒ˜๋Ÿผ, b ๊ฐ€ ๋‹ค๋ฅธ ๊ฐ’(2 ๊ฐ€ ์•„๋‹ˆ๋ผ 3)์„ ๊ฐ€์ง€๋ฏ€๋กœ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋Š” ์ค‘๋ณต์œผ๋กœ ๊ฐ„์ฃผ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.