๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

SELECT๋ฌธ ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋งŒ ์ถ”์ถœํ•˜๊ธฐ INTERSECT (๊ต์ง‘ํ•ฉ)

by 5566 2023. 10. 31.

1. ์†Œ๊ฐœ

INTERSECT๋Š” SQL์—์„œ ์‚ฌ์šฉ๋˜๋Š” SELECT๋ฌธ์˜ ํ•œ ์ข…๋ฅ˜๋กœ, ๋‘ ๊ฐœ ์ด์ƒ์˜ SELECT๋ฌธ ๊ฒฐ๊ณผ์—์„œ ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋งŒ์„ ์ถ”์ถœํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. INTERSECT๋Š” ์ฃผ์–ด์ง„ ์กฐ๊ฑด์— ๋งŒ์กฑํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์–ด ๋ฐ์ดํ„ฐ ๋ถ„์„์ด๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ์— ์œ ์šฉํ•˜๊ฒŒ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” INTERSECT์˜ ๊ฐœ๋…๊ณผ ์‚ฌ์šฉ๋ฒ•, ๊ทธ๋ฆฌ๊ณ  ์‹ค์ œ ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•  ๋•Œ INTERSECT๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํšจ์œจ์ ์ด๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


์ดํ•˜์˜ ํ•ญ๋ชฉ๋“ค์€ INTERSECT์— ๋Œ€ํ•œ ์ƒ์„ธํ•œ ์„ค๋ช…๊ณผ ์˜ˆ์‹œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

2. INTERSECT๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

INTERSECT๋Š” SQL์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์—ฐ์‚ฐ์ž๋กœ, ๋‘ ๊ฐœ ์ด์ƒ์˜ SELECT๋ฌธ์˜ ๊ฒฐ๊ณผ์—์„œ ์ค‘๋ณต๋œ ํ–‰๋งŒ์„ ์ถ”์ถœํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. INTERSECT ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ ๋‘ ๊ฐœ์˜ SELECT๋ฌธ์ด ํ•„์š”ํ•˜๋ฉฐ, ์ฒซ ๋ฒˆ์งธ SELECT๋ฌธ๊ณผ ๋‘ ๋ฒˆ์งธ SELECT๋ฌธ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋น„๊ตํ•˜์—ฌ ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋งŒ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

INTERSECT ์—ฐ์‚ฐ์ž๋Š” ๊ฒฐ๊ณผ๋กœ ๋ฐ˜ํ™˜๋˜๋Š” ํ–‰๋“ค์ด ๋ชจ๋“  SELECT๋ฌธ์—์„œ ์ผ์น˜ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜๋„๋ก ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ SELECT๋ฌธ์˜ ๊ฒฐ๊ณผ์—๋Š” ๋™์ผํ•œ ์—ด ์ˆ˜์™€ ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ๊ฐ€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ์—ด์˜ ์ด๋ฆ„์€ ์ผ์น˜ํ•˜์ง€ ์•Š์•„๋„ ๋˜์ง€๋งŒ ๊ฒฐ๊ณผ๋กœ ๋ฐ˜ํ™˜๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์—ด ์ด๋ฆ„์€ ์ฒซ ๋ฒˆ์งธ SELECT๋ฌธ์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

INTERSECT๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋งŒ์„ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ ์ •์ œ๋‚˜ ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๋Š” ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ๊ด€๋ จ ์ž‘์—…์— ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. INTERSECT๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ ์ถ”์ถœํ•˜๊ธฐ

INTERSECT๋Š” SQL์—์„œ ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ์—ฐ์‚ฐ์ž๋กœ, ๋‘ ๊ฐœ ์ด์ƒ์˜ SELECT๋ฌธ์˜ ๊ฒฐ๊ณผ์—์„œ ๊ณตํ†ต๋œ ๋ฐ์ดํ„ฐ๋งŒ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ์˜ ์ถ”์ถœ์€ ๋ฐ์ดํ„ฐ ์ •์ œ๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์ž‘์—…์—์„œ ์œ ์šฉํ•˜๊ฒŒ ํ™œ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

INTERSECT๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

SELECT column1, column2, ...
FROM table1
INTERSECT
SELECT column1, column2, ...
FROM table2;

์œ„์˜ ์˜ˆ์‹œ์—์„œ๋Š” ๋‘ ๊ฐœ์˜ SELECT๋ฌธ์ด ์กด์žฌํ•˜๋ฉฐ, ๊ฐ SELECT๋ฌธ์—์„œ ๋ฐ˜ํ™˜๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์—ด ์ด๋ฆ„๊ณผ ์œ ํ˜•์€ ๋™์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ SELECT๋ฌธ๊ณผ ๋‘ ๋ฒˆ์งธ SELECT๋ฌธ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋น„๊ตํ•˜์—ฌ ์ค‘๋ณต๋œ ํ–‰๋งŒ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ๋กœ ๋ฐ˜ํ™˜๋˜๋Š” ํ–‰๋“ค์€ ๋ชจ๋“  SELECT๋ฌธ์—์„œ ์ผ์น˜ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, "employees" ํ…Œ์ด๋ธ”๊ณผ "managers" ํ…Œ์ด๋ธ”์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. "employees" ํ…Œ์ด๋ธ”์—๋Š” ๋ชจ๋“  ์ง์›์˜ ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ์žˆ๊ณ , "managers" ํ…Œ์ด๋ธ”์—๋Š” ๋งค๋‹ˆ์ €์˜ ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค. ์ด๋•Œ INTERSECT๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งค๋‹ˆ์ € ๊ฒธ ์ง์›์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SELECT id, name, position
FROM employees
INTERSECT
SELECT id, name, position
FROM managers;

์œ„์˜ ์˜ˆ์‹œ์—์„œ๋Š” "employees" ํ…Œ์ด๋ธ”๊ณผ "managers" ํ…Œ์ด๋ธ”์—์„œ ๊ฐ๊ฐ id, name, position ์—ด์„ ์„ ํƒํ•˜์—ฌ ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜์—ฌ ๋ถ„์„ํ•˜๊ฑฐ๋‚˜ ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4. INTERSECT์˜ ํ™œ์šฉ ์˜ˆ์‹œ

INTERSECT ์—ฐ์‚ฐ์ž๋Š” ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ ์ถ”์ถœ์— ํ™œ์šฉ๋  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋‹ค์–‘ํ•œ ์ƒํ™ฉ์—์„œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” INTERSECT๋ฅผ ํ™œ์šฉํ•œ ๋ช‡ ๊ฐ€์ง€ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค:

์˜ˆ์‹œ 1: ์ค‘๋ณต ๋ฐ์ดํ„ฐ ์ •์ œ

SELECT emp_id, emp_name
FROM employees
INTERSECT
SELECT emp_id, emp_name
FROM sales;

์œ„์˜ ์˜ˆ์‹œ์—์„œ๋Š” "employees" ํ…Œ์ด๋ธ”๊ณผ "sales" ํ…Œ์ด๋ธ”์—์„œ ์ง์› ID์™€ ์ง์› ์ด๋ฆ„์ด ์ผ์น˜ํ•˜๋Š” ์ค‘๋ณต ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋‘ ํ…Œ์ด๋ธ”์—์„œ ๊ณตํ†ต์œผ๋กœ ์กด์žฌํ•˜๋Š” ์ง์›๋“ค์˜ ์ •๋ณด๋ฅผ ์ •์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์‹œ 2: ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ค‘๋ณต ๋ฐ์ดํ„ฐ ์ถ”์ถœ

SELECT customer_id, customer_name
FROM customers
WHERE purchase_amount >= 1000
INTERSECT
SELECT customer_id, customer_name
FROM orders
WHERE order_date >= '2022-01-01';

์œ„์˜ ์˜ˆ์‹œ์—์„œ๋Š” "customers" ํ…Œ์ด๋ธ”๊ณผ "orders" ํ…Œ์ด๋ธ”์—์„œ ๊ตฌ๋งค ๊ธˆ์•ก์ด 1000 ์ด์ƒ์ธ ๊ณ ๊ฐ๋“ค๊ณผ 2022๋…„ 1์›” 1์ผ ์ดํ›„์— ์ฃผ๋ฌธํ•œ ๊ณ ๊ฐ๋“ค์˜ ์ค‘๋ณต ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ํŠน์ • ๊ณ ๊ฐ๋“ค์˜ ์ •๋ณด๋ฅผ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์‹œ 3: ๋ฐ์ดํ„ฐ์˜ ์ผ์น˜ ์—ฌ๋ถ€ ํ™•์ธ

SELECT product_id, product_name
FROM inventory
INTERSECT
SELECT product_id, product_name
FROM sales_report;

์œ„์˜ ์˜ˆ์‹œ์—์„œ๋Š” "inventory" ํ…Œ์ด๋ธ”๊ณผ "sales_report" ํ…Œ์ด๋ธ”์—์„œ ์ƒํ’ˆ ์•„์ด๋””์™€ ์ƒํ’ˆ ์ด๋ฆ„์ด ์ผ์น˜ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์žฌ๊ณ ์™€ ์‹ค์ œ ํŒ๋งค ๋ฐ์ดํ„ฐ์˜ ์ผ์น˜ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

INTERSECT๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๋Š” ๊ฒƒ์€ ๋ฐ์ดํ„ฐ ์ •์ œ๋‚˜ ๋ฐ์ดํ„ฐ ์ผ์น˜ ์—ฌ๋ถ€ ํ™•์ธ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์—์„œ ์œ ์šฉํ•˜๊ฒŒ ํ™œ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ์˜ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋‚˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ฐ์ดํ„ฐ ์ถ”์ถœ ๋“ฑ ๋‹ค์–‘ํ•œ ํ™œ์šฉ ๋ฐฉ๋ฒ•์„ ์ฐพ์•„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5. ๊ฒฐ๋ก 

INTERSECT ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ์˜ ์ •์ œ๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์ž‘์—…์— ์œ ์šฉํ•˜๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜์—ฌ ๋ถ„์„ํ•˜๊ฑฐ๋‚˜ ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š” ๋“ฑ ๋‹ค์–‘ํ•œ ์šฉ๋„๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

INTERSECT ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๊ฐ„๋‹จํ•˜๋ฉฐ, ๋‘ ๊ฐœ ์ด์ƒ์˜ SELECT๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. SELECT๋ฌธ์—์„œ ๋ฐ˜ํ™˜๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์—ด ์ด๋ฆ„๊ณผ ์œ ํ˜•์ด ๋™์ผํ•ด์•ผ ํ•˜๋ฉฐ, ์ฒซ ๋ฒˆ์งธ SELECT๋ฌธ๊ณผ ๋‘ ๋ฒˆ์งธ SELECT๋ฌธ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋น„๊ตํ•˜์—ฌ ์ค‘๋ณต๋œ ํ–‰๋งŒ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๋Š” ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด INTERSECT์˜ ํ™œ์šฉ๋ฒ•์„ ํ™•์ธํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ค‘๋ณต ๋ฐ์ดํ„ฐ ์ •์ œ, ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ค‘๋ณต ๋ฐ์ดํ„ฐ ์ถ”์ถœ, ๋ฐ์ดํ„ฐ์˜ ์ผ์น˜ ์—ฌ๋ถ€ ํ™•์ธ ๋“ฑ ๋‹ค์–‘ํ•œ ์ƒํ™ฉ์—์„œ INTERSECT ์—ฐ์‚ฐ์ž๋ฅผ ์œ ์šฉํ•˜๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ INTERSECT๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๊ณ  ๋ถ„์„ํ•˜๋Š” ๊ฒƒ์€ ๋ฐ์ดํ„ฐ ์ •์ œ์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ์žˆ์–ด์„œ ์œ ์šฉํ•œ ๋„๊ตฌ๋กœ ํ™œ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€