์ ์ฌ์ง์ ์ถ์ฒ: https://yoo-hyeok.tistory.com/98
SQL join ๋ฌธ์ด ๊ฐ์ฅ ์ ์ ๋ฆฌ ๋์ด ์๋ ๊ทธ๋ฆผ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
join: ๋์ผํ column์ ๊ธฐ์ค์ผ๋ก ํ ์ด๋ธ์ ํ๋๋ก ํฉ์นฉ๋๋ค.
left(right) join ๊ณผ left(right) outer join์ ์ฐจ์ด์
์คํ ๊ฒฐ๊ณผ๋ ๋์ผ ํฉ๋๋ค.
left join์ ๊ฒฝ์ฐ ๋์ผํ column์ผ๋ก ํ๋๋ก ํฉ์ณ์ง๊ณ left ์ชฝ(A)์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ๊ณ B์ ๋ฐ์ดํฐ๋ null๋ก ํ์ ๋ฉ๋๋ค.
A ํ ์ด๋ธ | id | name |
1 | 1 | aaa |
2 | 2 | AAA |
B ํ ์ด๋ธ | id | name |
1 | 2 | AAA |
2 | 3 | bbb |
left join ๊ฒฐ๊ณผ
A left join B | id | name | id | name |
1 | 1 | aaa | null | null |
2 | 2 | AAA | 2 | AAA |
SELECT * from A left join B on A.id = B.id;
id๋ฅผ ๊ธฐ์ค์ผ๋ก A ํ ์ด๋ธ์ ์์ ์์ด ๋ ํ ์ด๋ธ์ ํฉ์นฉ๋๋ค.
B ํ ์ด๋ธ์ ์กด์ฌํ์ง ์๋ id์ ๋ฐ์ดํฐ๋ null๋ก ํ์๋ฉ๋๋ค.
์ด null ๊ฐ์ where ์กฐ๊ฑด์ ์ฌ์ฉํ๋ฉด A ํน์ B๋ง ๊ฐ์ง๊ณ ์๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
A์ B ํ ์ด๋ธ ๊ณตํต ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ (inner join๊ณผ ๋์ผ)
A left join B | id | name | id | name |
1 | 2 | AAA | 2 | AAA |
SELECT * from A left outer join B on A.id = B.id where B.id is not null;
์ ์ฝ๋์ ๊ฒฐ๊ณผ๋ inner join์ ์ฌ์ฉํ ๊ฒ๊ณผ ๋์ผ ํฉ๋๋ค.
SELECT * from A inner join B on A.id = B.id;
A ํ ์ด๋ธ์๋ง ์๋ ๋ฐ์ดํฐ๋ง ๊ฐ์ ธ์ค๊ธฐ
A left join B | id | name | id | name |
1 | 1 | aaa | null | null |
SELECT * from A left outer join B on A.id = B.id where B.id is null;
'Programming > DB' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ฟผ๋ฆฌ ํ๋] Oracle DB ์ฟผ๋ฆฌ ํ๋ ํ๊ณ (ft. LPAD) (0) | 2024.08.29 |
---|---|
postgresql Homebrew๋ก ์ค์น๋ถํฐ DBeaver ์ฐ๊ฒฐ๊น์ง (0) | 2022.03.22 |
[DBeaver / MySQL] ๋ฌดํ ๋ก๋ฉ(dead lock) ํด๊ฒฐ (2) | 2021.12.29 |