EEALL@ONCE
๐์๋ธ ์ฟผ๋ฆฌ : ์ง๊ณ vs inner join : ๊ฒฐํฉ ๋ณธ๋ฌธ
๐์๋ธ ์ฟผ๋ฆฌ : ์ง๊ณ vs inner join : ๊ฒฐํฉ
์ฌ์ฃ์์ค 2023. 8. 16. 18:55`bill_acc_id`๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ทธ๋ฃนํํ์ฌ `aply_amt` ๊ฐ์ ๋ชจ๋ ๋ํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ `total_deposit` ์ปฌ๋ผ์ ์
๋ฐ์ดํธํ๋ ค๋ ๊ฒ์ผ๋ก ์ดํดํ์์ต๋๋ค.
์๋์ SQL ์ฟผ๋ฆฌ๋ ๊ทธ ์์
์ ์ํํ๋ ์์์
๋๋ค.
1. ๋จผ์ , `bill_acc_id`๋ฅผ ๊ธฐ์ค์ผ๋ก `aply_amt` ๊ฐ์ ๋ํ๋ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํฉ๋๋ค.
2. ๊ทธ ๋ค์, ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก `tb_rmny` ํ
์ด๋ธ์ `total_deposit` ์ปฌ๋ผ์ ์
๋ฐ์ดํธํฉ๋๋ค.
UPDATE tb_rmny
SET total_deposit = (
SELECT SUM(aply_amt)
FROM tb_rmny AS subquery
WHERE subquery.bill_acc_id = tb_rmny.bill_acc_id
)
์ด ์ฟผ๋ฆฌ๋ `tb_rmny` ํ
์ด๋ธ ๋ด์ ๊ฐ์ `bill_acc_id`๋ฅผ ๊ฐ์ง ํ๋ค์ `aply_amt` ๊ฐ์ ๋ชจ๋ ๋ํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํด๋น ๊ทธ๋ฃน์ `total_deposit` ์ปฌ๋ผ์ ํ ๋นํฉ๋๋ค.
์๋ธ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ๋์ผํ ํ
์ด๋ธ ๋ด์์ `bill_acc_id` ๋ณ๋ก ๊ทธ๋ฃนํ๋ฅผ ํ๊ธฐ ์ํด์์
๋๋ค.
INNER JOIN์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์์ ์ฐจ์ด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
1. **์ฟผ๋ฆฌ ๊ตฌ์กฐ**: ์๋ธ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์์ ํด๋น ์ปฌ๋ผ์ ์ง์ ์
๋ฐ์ดํธํ๋ ๋ฐ ์ด์ ์ ๋ง์ถ๊ณ ์์ผ๋ฉฐ, INNER JOIN์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ ๊ฐ ์ด์์ ํ
์ด๋ธ ๊ฐ ๊ด๊ณ๋ฅผ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฒฐํฉํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
2. **์ฉ๋**: ์๋ธ์ฟผ๋ฆฌ ๋ฐฉ์์ ๋์ผํ ํ
์ด๋ธ์์ ํน์ ์กฐ๊ฑด์ ๋ฐ๋ฅธ ์ง๊ณ๋ฅผ ์ํํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ์
๋ฐ์ดํธํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. INNER JOIN์ ์๋ก ๋ค๋ฅธ ํ
์ด๋ธ ๊ฐ์ ๊ณตํต ์ปฌ๋ผ์ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฒฐํฉํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
INNER JOIN์ ์ฌ์ฉํ์ฌ ๋์ผํ ์์
์ ์ํํ๋ ค๋ฉด, ๋ค์๊ณผ ๊ฐ์ ์ฟผ๋ฆฌ๊ฐ ๋ ์ ์์ต๋๋ค.
UPDATE tb_rmny
INNER JOIN (
SELECT bill_acc_id, SUM(aply_amt) AS sum_amt
FROM tb_rmny
GROUP BY bill_acc_id
) AS subquery ON tb_rmny.bill_acc_id = subquery.bill_acc_id
SET tb_rmny.total_deposit = subquery.sum_amt;