βš™οΈ backend/πŸ›’οΈ database

[MySQL] UNION을 μ‚¬μš©ν•˜μ—¬ μ—¬λŸ¬ 집합을 ν•˜λ‚˜μ˜ μ§‘ν•©μœΌλ‘œ κ²°ν•©ν•˜κΈ°

dev!n 2023. 3. 6. 23:58

SQLμ—μ„œ UNION μ—°μ‚°μžλŠ” 두 개 μ΄μƒμ˜ SELECT 문의 κ²°κ³Όλ₯Ό ν•˜λ‚˜μ˜ μ§‘ν•©μœΌλ‘œ κ²°ν•©ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. 각 SELECT 문의 κ²°κ³ΌλŠ” λŒ€μ‘ν•˜λŠ” ν•„λ“œμ˜ 이름과 νƒ€μž…μ΄ κ°™μ•„μ•Ό ν•©λ‹ˆλ‹€.

# μ˜ˆμ‹œ 쿼리
SELECT employee_id, first_name, last_name
FROM employees
WHERE department_id = 1
UNION
SELECT employee_id, first_name, last_name
FROM employees
WHERE department_id = 2;

이 μ˜ˆμ œμ—λŠ” employees ν…Œμ΄λΈ”μ—μ„œ employee_id, first_name 및 last_name 열을 μ„ νƒν•©λ‹ˆλ‹€. 첫 번째 SELECT 문은 department_id 1의 μ§μ›λ§Œ μ„ νƒν•˜κ³ , 두 번째 SELECT 문은 department_id 2의 μ§μ›λ§Œ μ„ νƒν•©λ‹ˆλ‹€.

UNION μ—°μ‚°μžλŠ” 이 두 SELECT 문의 κ²°κ³Όλ₯Ό ν•˜λ‚˜μ˜ μ§‘ν•©μœΌλ‘œ κ²°ν•©ν•©λ‹ˆλ‹€. 이 κ²°κ³Ό μ§‘ν•©μ—λŠ” 두 SELECT λ¬Έμ—μ„œ μ„ νƒν•œ λͺ¨λ“  행이 쀑볡 제거된 μƒνƒœλ‘œ ν¬ν•¨λ©λ‹ˆλ‹€. UNION은 뒀에 DISTINCTκ°€ μƒλž΅λœ 것과 κ°™μŠ΅λ‹ˆλ‹€. κ²°κ³Ό 집합에 μ€‘λ³΅λœ 데이터도 ν¬ν•¨ν•˜λ €λ©΄ UNION ALL을 ν•©λ‹ˆλ‹€.

# κ²°κ³Ό
employee_id  |  first_name  |  last_name
-------------|--------------|------------
1            |  John        |  Smith
2            |  Jane        |  Doe
3            |  Tom         |  Jones
4            |  Bob         |  Johnson
5            |  Mary        |  Smith
6            |  Jim         |  Brown

 

μ°Έκ³ 

http://www.tcpschool.com/mysql/mysql_multipleTable_union