JOIN

2025. 2. 19. 22:02ยท๐Ÿ“ SQL/๐Ÿ“

MySQL 8.4 ๊ธฐ์ค€

ํ…Œ์ด๋ธ” ์ฐธ์กฐ, ๋‘ ๊ฐœ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”์—์„œ ๊ด€๋ จ ์—ด์„ ๊ธฐ์ค€์œผ๋กœ ํ–‰์„ ๊ฒฐํ•ฉ
SELECT *
FROM table1 JOIN table2
ON table1.id = table2.id

MySQL JOINS

 

 

INNER JOIN (๋‚ด๋ถ€ ์กฐ์ธ, ์กฐ์ธ, ๊ต์ง‘ํ•ฉ)

์กฐ์ธํ•˜๋Š” ํ…Œ์ด๋ธ”์˜ ON์ ˆ์˜ ์กฐ๊ฑด์ด ์ผ์น˜ํ•˜๋Š” ๊ฒฐ๊ณผ๋งŒ ์ถœ๋ ฅ

SELECT *
FROM T_1 A INNER JOIN T_2 B
ON A.KEY = B.KEY

SELECT *
FROM T_1 A JOIN T_2 B
ON A.KEY = B.KEY

SELECT *
FROM T_1 A CROSS JOIN T_2 B
ON A.KEY = B.KEY

-- FROM์ ˆ์— ์ฝค๋งˆ๋กœ ํ…Œ์ด๋ธ” ์—ฌ๋Ÿฌ๊ฐœ ์ž‘์„ฑ → INNER JOIN
SELECT *
FROM T_1 A, T_2 B
WHERE A.KEY = B.KEY

 

MySQL์—์„œ๋Š” JOIN, CROSS JOIN, INNER JOIN์ด ๋ฌธ๋ฒ•์ ์œผ๋กœ ๋™์ผ, ๋ชจ๋‘ ๊ฐ™์€ ์˜๋ฏธ

ํ‘œ์ค€ SQL์—์„œ๋Š” INNER JOIN์€ ๋ฐ˜๋“œ์‹œ ON์ ˆ๊ณผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๊ณ , CROSS JOIN์€ ON์ ˆ ์—†์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ์„œ๋กœ ๋‹ค๋ฅธ ์˜๋ฏธ


OUTER JOIN

LEFT [OUTER] JOIN

๋‘ ํ…Œ์ด๋ธ”์ด ํ•ฉ์ณ์งˆ ๋•Œ LEFT(์ฒซ ๋ฒˆ์งธ ํ…Œ์ด๋ธ”)์„ ๊ธฐ์ค€์œผ๋กœ ๋‘ ๋ฒˆ์งธ ํ…Œ์ด๋ธ”์„ ์กฐํ•ฉ

-- T_1์„ ๊ธฐ์ค€์œผ๋กœ LEFT JOIN
SELECT *
FROM T_1 A LEFT [OUTER] JOIN T_2 B
ON A.KEY = B.KEY

ํ…Œ์ด๋ธ” ์ˆœ์„œ ๋งค์šฐ ์ค‘์š” !! ์ฒซ ๋ฒˆ์งธ ํ…Œ์ด๋ธ”๋กœ SELECT๋ฌธ์— ๊ฐ€์žฅ ๋งŽ์€ ์—ด์„ ๊ฐ€์ ธ์™€์•ผ ํ•  ํ…Œ์ด๋ธ”์„ ์šฐ์„ ์œผ๋กœ ์ž‘์„ฑ

์กฐ์ธ ์‹œ์ž‘์„ LET JOIN์œผ๋กœ ํ–ˆ๋‹ค๋ฉด ๋‚˜๋จธ์ง€ ์กฐ์ธ๋„ LEFT JOIN์„ ์ด์–ด๊ฐ€์•ผ ํ•จ (INNER JOIN์ด๋‚˜ ๋‹ค๋ฅธ ์กฐ์ธ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ)

 

 

RIGHT [OUTER] JOIN

๋‘ ํ…Œ์ด๋ธ”์ด ํ•ฉ์ณ์งˆ ๋•Œ  RIGHT(๋‘ ๋ฒˆ์งธ ํ…Œ์ด๋ธ”)์„ ๊ธฐ์ค€์œผ๋กœ ์ฒซ ๋ฒˆ์งธ ํ…Œ์ด๋ธ”์„ ์กฐํ•ฉ

-- T_2์„ ๊ธฐ์ค€์œผ๋กœ RIGHT JOIN
SELECT *
FROM T_1 A RIGHT [OUTER] JOIN T_2 B
ON A.KEY = B.KEY

 

N์ค‘ ์กฐ์ธ
-- T_1์„ ๊ธฐ์ค€์œผ๋กœ LEFT JOIN
SELECT *
FROM T_1 A
LEFT JOIN T_2 B
ON A.KEY = B.KEY
LEFT JOIN T_3 C
ON B.KEY = C.KEY

 

 

FULL [OUTER] JOIN

SELECT *
FROM T_1 A FULL [OUTER] JOIN T_2 B
ON A.KEY = B.KEY

๋Œ€๋ถ€๋ถ„์˜ DB๋Š” FULL OUTER JOIN ์ง€์› X

(SELECT * FROM T_1 A LEFT JOIN T_2 B ON A.KEY = B.KEY)
UNION
(SELECT * FROM T_1 A RIGHT JOIN T_2 B ON A.KEY = B.KEY)

LEFT JOIN ํ…Œ์ด๋ธ”๊ณผ RIGHT JOIN ํ…Œ์ด๋ธ”์„ UNION ํ•ฉ์ง‘ํ•ฉ

UNION
์—ฌ๋Ÿฌ ๊ฐœ์˜ SELECT๋ฌธ์˜ ๊ฒฐ๊ณผ๋ฅผ ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์ด๋‚˜ ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์œผ๋กœ ํ‘œํ˜„ํ•  ๋•Œ ์‚ฌ์šฉ
• ๊ฐ๊ฐ์˜ SELECT๋ฌธ์œผ๋กœ ์„ ํƒ๋œ ํ•„๋“œ์˜ ๊ฐœ์ˆ˜์™€ ํƒ€์ž…, ์ˆœ์„œ๊ฐ€ ๊ฐ™์•„์•ผ ํ•จ
• DISTINCT ์ค‘๋ณต ์ œ๊ฑฐ ์ž๋™ ํฌํ•จ → ์ค‘๋ณต ํฌํ•จํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด UNION ALL ์‚ฌ์šฉ

 

 

EXCLUSIVE LEFT/RIGHT JOIN

์–ด๋А ํŠน์ • ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ๋ ˆ์ฝ”๋“œ๋งŒ ๊ฐ€์ ธ์˜ด

LEFT/RIGHT JOIN๊ณผ WHERE์ ˆ์„ ํ•จ๊ป˜ ์‚ฌ์šฉ

SELECT *
FROM T_1 A LEFT/RIGHT JOIN T_2 B
ON A.KEY = B.KEY
WHERE B.KEY IS NULL / WHERE A.KEY IS NULL

 

SELECT * FROM T_1 A LEFT JOIN T_2 B
UNION
SELECT * FROM T_1 A RIGHT JOIN T_2 B
WHERE A.KEY IS NULL OR B.KEY IS NULL

SELF JOIN

ํ…Œ์ด๋ธ” ์ž๊ธฐ์ž์‹ ์„ ์กฐ์ธ

SELECT *
FROM T_1 A, T_1 B
ON A.COLUMN = B.COLUMN

-- ๊ฐ™์€ ํ…Œ์ด๋ธ” ๋‚ด์—์„œ ์–ด๋–ค ๋Œ€์žฅ๊ท ์˜ ID๊ฐ€ ์–ด๋–ค ๋Œ€์žฅ๊ท ์˜ PARENT_ID์™€ ๊ฐ™์œผ๋ฉด ์ถœ๋ ฅ
SELECT A.ID, COUNT(B.PARENT_ID) AS CHILD_COUNT
FROM ECOLI_DATA A, ECOLI_DATA B
ON A.ID = B.PARENT_ID
GROUP BY A.ID

 


JOIN ์ค‘๋ณต ๋ ˆ์ฝ”๋“œ ์ œ๊ฑฐ

DISTINCT ์‚ฌ์šฉ

๊ฐ„๋‹จํ•˜์ง€๋งŒ ๋ ˆ์ฝ”๋“œ ์ˆ˜๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ ์„ฑ๋Šฅ์ด ๋А๋ฆฌ๋‹ค๋Š” ๋‹จ์ 

SELECT DISTINCT A.ID, B.NAME
FORM T_1 A INNER JOIN T_2 B
ON A.ID = B.ID

 

JOIN ์ „์— ์ค‘๋ณต ์ œ๊ฑฐ

SELECT A.ID, A.NAME
FROM T_1 A LEFT JOIN (SELECT DISTINCT NAME, ID FROM T_2) AS B
ON A.ID = B.ID

 

๋ฐ˜์‘ํ˜•

'๐Ÿ“ SQL > ๐Ÿ“' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

MAX()์™€ LIMIT 1  (0) 2025.02.22
LIKE / REGEXP  (0) 2025.02.20
GROUP BY  (0) 2025.02.19
์ˆซ์ž ํ•จ์ˆ˜  (0) 2025.02.18
๋‚ ์งœ, ์‹œ๊ฐ„ ํ•จ์ˆ˜  (0) 2025.02.17
'๐Ÿ“ SQL/๐Ÿ“' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • MAX()์™€ LIMIT 1
  • LIKE / REGEXP
  • GROUP BY
  • ์ˆซ์ž ํ•จ์ˆ˜
leee
leee
  • leee
    LEE
    leee
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ์นดํ…Œ๊ณ ๋ฆฌ
      • ๐Ÿ“ QA
        • Test
        • Lecture
      • ๐Ÿ“ SQL
        • ๐Ÿ“
      • ๐Ÿ“ Spring
        • Lecture
        • Error
      • ๐Ÿ“ Github
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ๐Ÿ 
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    mismatch
    mysql_๋ฐ์ดํ„ฐํƒ€์ž…๋ณ€ํ™˜
    ํฌ์ŠคํŠธ๋งจ
    shift_์—ฐ์‚ฐ์ž
    mysql_์—ฐ์‚ฐ์ž
    ๊นƒํ—ˆ๋ธŒ ์ธํ…”๋ฆฌ์ œ์ด ์—ฐ๋™ ํ•ด์ œ
    api ํ…Œ์ŠคํŠธ
    COUNT(*)
    MySQL
    API Testing
    ์Šคํ”„๋ง ๊ฐ์ฒด์ง€ํ–ฅ
    API test
    mysql_join
    API ์ž๋™ํ™” ํ…Œ์ŠคํŠธ
    AppConfig
    Postman
    ์ƒ์„ฑ์ž์ฃผ์ž…
    SQL_Join
    DI ์ปจํ…Œ์ด๋„ˆ
    mysql_๊ธฐ๊ฐ„_๊ฒ€์ƒ‰
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.5
leee
JOIN
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”