๐Ÿ“ŒSQL ๋ฌธ๋ฒ• - UNION๊ณผ ์ง‘ํ•ฉ ์—ฐ์‚ฐ ํ™œ์šฉ๋ฒ•

์กยท2025๋…„ 4์›” 7์ผ
0

๐Ÿ’พ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค

๋ชฉ๋ก ๋ณด๊ธฐ
10/12
post-thumbnail

SQL์€ ๋‹จ์ˆœํžˆ ํ…Œ์ด๋ธ”์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š” ๊ฒƒ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ,
์—ฌ๋Ÿฌ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์กฐํ•ฉํ•˜๊ฑฐ๋‚˜ ๋น„๊ตํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
์ด๋ฒˆ ๊ธ€์—์„œ๋Š” SQL์˜ ์ง‘ํ•ฉ ์—ฐ์‚ฐ์ž๋“ค์„ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


โœ… ์ง‘ํ•ฉ ์—ฐ์‚ฐ์ด๋ž€?

๋‘ ๊ฐœ ์ด์ƒ์˜ SELECT ๊ฒฐ๊ณผ๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ๊ฑฐ๋‚˜ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ์—ฐ์‚ฐ์ž…๋‹ˆ๋‹ค.
โ†’ ์ˆ˜ํ•™์—์„œ์˜ ํ•ฉ์ง‘ํ•ฉ, ๊ต์ง‘ํ•ฉ, ์ฐจ์ง‘ํ•ฉ ๊ฐœ๋…์„ SQL๋กœ ๊ตฌํ˜„ํ•œ ๊ฑฐ์˜ˆ์š”.


โœด๏ธ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ง‘ํ•ฉ ์—ฐ์‚ฐ์ž

์—ฐ์‚ฐ์ž์˜๋ฏธ์„ค๋ช…
UNIONํ•ฉ์ง‘ํ•ฉ๋‘ ๊ฒฐ๊ณผ๋ฅผ ํ•ฉ์ณ ์ค‘๋ณต ์ œ๊ฑฐ
UNION ALLํ•ฉ์ง‘ํ•ฉ (์ค‘๋ณต ํ—ˆ์šฉ)๋‘ ๊ฒฐ๊ณผ๋ฅผ ํ•ฉ์ณ ์ค‘๋ณต๊นŒ์ง€ ๋ชจ๋‘ ํฌํ•จ
INTERSECT๊ต์ง‘ํ•ฉ๋‘ ๊ฒฐ๊ณผ์— ๋ชจ๋‘ ํฌํ•จ๋˜๋Š” ๊ฐ’๋งŒ ๋ฐ˜ํ™˜
EXCEPT์ฐจ์ง‘ํ•ฉ์ฒซ ๋ฒˆ์งธ ๊ฒฐ๊ณผ์—์„œ ๋‘ ๋ฒˆ์งธ ๊ฒฐ๊ณผ๋ฅผ ์ œ์™ธ
MINUS์ฐจ์ง‘ํ•ฉ (Oracle ์ „์šฉ)Oracle์—์„œ EXCEPT ๋Œ€์‹  ์‚ฌ์šฉ

๐Ÿ“Œ ์ฃผ์˜: ์ง‘ํ•ฉ ์—ฐ์‚ฐ์„ ์“ฐ๋ ค๋ฉด

  • SELECT ์ ˆ์˜ ์ปฌ๋Ÿผ ์ˆ˜์™€ ํƒ€์ž…์ด ๋™์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค!

์˜ˆ์‹œ ํ…Œ์ด๋ธ”

๐Ÿ—‚๏ธ Student_A ํ…Œ์ด๋ธ”

name
๊น€์ฒ ์ˆ˜
์ด์˜ํฌ
๋ฐ•๋ฏผ์ˆ˜
SELECT name FROM Student_A;

๐Ÿ—‚๏ธ Student_B ํ…Œ์ด๋ธ”

name
์ด์˜ํฌ
์ •์˜ˆ๋ฆฐ
๋ฐ•๋ฏผ์ˆ˜
SELECT name FROM Student_B;

๐Ÿ”— 1. UNION - ์ค‘๋ณต ์ œ๊ฑฐํ•œ ํ•ฉ์ง‘ํ•ฉ

SELECT name FROM Student_A
UNION
SELECT name FROM Student_B;
๊ฒฐ๊ณผ name
๊น€์ฒ ์ˆ˜
์ด์˜ํฌ
๋ฐ•๋ฏผ์ˆ˜
์ •์˜ˆ๋ฆฐ

๐Ÿ“Œ ๋‘ SELECT ๊ฒฐ๊ณผ๋ฅผ ํ•ฉ์น˜๋˜, ์ค‘๋ณต์€ ์ œ๊ฑฐ


๐Ÿ”— 2. UNION ALL - ์ค‘๋ณต ํฌํ•จํ•œ ํ•ฉ์ง‘ํ•ฉ

SELECT name FROM Student_A
UNION ALL
SELECT name FROM Student_B;
๊ฒฐ๊ณผ name
๊น€์ฒ ์ˆ˜
์ด์˜ํฌ
๋ฐ•๋ฏผ์ˆ˜
์ด์˜ํฌ
์ •์˜ˆ๋ฆฐ
๋ฐ•๋ฏผ์ˆ˜
  • ์ค‘๋ณต ํฌํ•จ โ†’ ๊ฐœ์ˆ˜๊นŒ์ง€ ํฌํ•จํ•œ ์ „์ฒด ํ•ฉ์ง‘ํ•ฉ
  • ์„ฑ๋Šฅ์ด ๋น ๋ฅด์ง€๋งŒ, ์ค‘๋ณต์„ ๊ฑธ๋Ÿฌ๋‚ด์ง€ ์•Š์œผ๋‹ˆ ์‚ฌ์šฉ ์‹œ ์ฃผ์˜๊ฐ€ ํ•„์š”

๐Ÿ”— 3. INTERSECT - ๊ต์ง‘ํ•ฉ

SELECT name FROM Student_A
INTERSECT
SELECT name FROM Student_B;
๊ฒฐ๊ณผ name
์ด์˜ํฌ
๋ฐ•๋ฏผ์ˆ˜
  • ๋‘ ํ…Œ์ด๋ธ” ๋ชจ๋‘์— ์žˆ๋Š” ๊ณตํ†ต ์ด๋ฆ„๋งŒ ์ถœ๋ ฅ
  • ๊ณตํ†ต๋œ ํ–‰๋งŒ ์ถ”์ถœํ•˜๋ฏ€๋กœ, ์–ด๋–ค ๊ฐ’์ด ์–‘์ชฝ์— ์žˆ๋Š”์ง€ ํ™•์ธํ•  ๋•Œ ์œ ์šฉ
  • ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ DB: PostgreSQL, SQL Server, Oracle
  • โ— MySQL์—์„œ๋Š” ์ง€์›ํ•˜์ง€ ์•Š์Œ

๐Ÿ”— 4. EXCEPT / MINUS - ์ฐจ์ง‘ํ•ฉ

-- PostgreSQL / SQL Server
SELECT name FROM Student_A
EXCEPT
SELECT name FROM Student_B;

-- Oracle
SELECT name FROM Student_A
MINUS
SELECT name FROM Student_B;
๊ฒฐ๊ณผ name
๊น€์ฒ ์ˆ˜
  • Student_A์—๋Š” ์žˆ์ง€๋งŒ Student_B์—๋Š” ์—†๋Š” ๊ฐ’
  • ๋ฐ์ดํ„ฐ ๋น„๊ต, ๋น ์ง„ ๊ฐ’ ์ฐพ๊ธฐ์— ์ž์ฃผ ์‚ฌ์šฉ๋ผ์š”!

๐Ÿงช ์‹ค์ „ ์˜ˆ์ œ

๐ŸŽฏ A. ์ฃผ๋ฌธํ•œ ๊ณ ๊ฐ + ๋ฏธ์ฃผ๋ฌธ ๊ณ ๊ฐ ํฌํ•จ (์ค‘๋ณต ์ œ๊ฑฐ)

SELECT custid FROM Orders
UNION
SELECT custid FROM Customer;

๐ŸŽฏ B. ์ฃผ๋ฌธํ•œ ์  ์žˆ๋Š” ๊ณ ๊ฐ ID ์ „์ฒด (์ค‘๋ณต ํฌํ•จ)

SELECT custid FROM Orders
UNION ALL
SELECT custid FROM Orders; -- ์˜ˆ์‹œ๋ฅผ ์œ„ํ•ด ์ค‘๋ณต

๐ŸŽฏ C. ์ฃผ๋ฌธํ•œ ๊ณ ๊ฐ ์ค‘ ์‚ฌ์›์ด๊ธฐ๋„ ํ•œ ์‚ฌ๋žŒ

SELECT name FROM Customer
INTERSECT
SELECT name FROM Employee;

๐ŸŽฏ D. ์ฃผ๋ฌธ ์•ˆ ํ•œ ๊ณ ๊ฐ ์ฐพ๊ธฐ

SELECT name FROM Customer
EXCEPT
SELECT name FROM (
  SELECT DISTINCT name
  FROM Customer C
  JOIN Orders O ON C.custid = O.custid
);

โš ๏ธ ์ฃผ์˜์‚ฌํ•ญ

  • ์ปฌ๋Ÿผ ์ˆ˜์™€ ์ˆœ์„œ๊ฐ€ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ORDER BY๋Š” ๋งˆ์ง€๋ง‰ SELECT ๊ฒฐ๊ณผ์—๋งŒ ์ ์šฉ ๊ฐ€๋Šฅ!
SELECT name FROM A
UNION
SELECT name FROM B
ORDER BY name; -- OK

๐Ÿง  ๋งˆ๋ฌด๋ฆฌ

์—ฐ์‚ฐ์ž์„ค๋ช…๊ฒฐ๊ณผ ์˜ˆ์‹œ
UNIONํ•ฉ์ง‘ํ•ฉ (์ค‘๋ณต ์ œ๊ฑฐ)๊น€์ฒ ์ˆ˜, ์ด์˜ํฌ, ๋ฐ•๋ฏผ์ˆ˜, ์ •์˜ˆ๋ฆฐ
UNION ALLํ•ฉ์ง‘ํ•ฉ (์ค‘๋ณต ํฌํ•จ)๊น€์ฒ ์ˆ˜, ์ด์˜ํฌ, ๋ฐ•๋ฏผ์ˆ˜, ์ด์˜ํฌ, ์ •์˜ˆ๋ฆฐ, ๋ฐ•๋ฏผ์ˆ˜
INTERSECT๊ต์ง‘ํ•ฉ (๊ณตํ†ต๋œ ๊ฐ’๋งŒ ์ถ”์ถœ)์ด์˜ํฌ, ๋ฐ•๋ฏผ์ˆ˜
EXCEPT์ฐจ์ง‘ํ•ฉ (์•ž ํ…Œ์ด๋ธ”์—๋งŒ ์žˆ๋Š” ๊ฐ’)๊น€์ฒ ์ˆ˜

๐Ÿ“˜ ํ•™์Šต ํŒ
โ€ข ์ง‘ํ•ฉ ์—ฐ์‚ฐ์€ ์ฟผ๋ฆฌ ๋‘ ๊ฐœ๋ฅผ ํ•˜๋‚˜๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์–ด ์œ ์šฉ
โ€ข ์ค‘๋ณต ์ œ๊ฑฐ๊ฐ€ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์œผ๋‹ˆ UNION ALL์ด ๋” ๋น ๋ฆ„
โ€ข INTERSECT, EXCEPT์€ ์กฐ๊ฑด ํ•„ํ„ฐ๋ง๋ณด๋‹ค ์ง๊ด€์ ์ผ ๋•Œ ์œ ๋ฆฌํ•จ
โ€ข UNION๊ณผ UNION ALL์˜ ์„ฑ๋Šฅ ์ฐจ์ด ๊ธฐ์–ต!
โ€ข INTERSECT, EXCEPT์€ ์ปฌ๋Ÿผ ์ˆ˜์™€ ์ˆœ์„œ๊ฐ€ ๋™์ผํ•ด์•ผ ์ž‘๋™
โ€ข ORDER BY๋Š” ์ „์ฒด ์ง‘ํ•ฉ ์—ฐ์‚ฐ ๋’ค์—๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

profile
์•ˆ๋…•ํ•˜์„ธ์š”! AI & ๋ฐ์ดํ„ฐ๋ถ„์„์„ ์ „๊ณตํ•˜๋Š” ๋Œ€ํ•™์›์ƒ(์„์‚ฌ ๊ณผ์ •)์ž…๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€