IT/DataBase

[Oracle] Oracle ์ค‘๋ณต๋ฐ์ดํ„ฐ ์ œ๊ฑฐ(feat. delete from table + group by having)

์•Œ ์ˆ˜ ์—†๋Š” ์‚ฌ์šฉ์ž 2022. 11. 29.

๋ชฉ์ฐจ

     

    Oracle ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋งŒ ์กฐํšŒ๐Ÿ˜‰

    select from table group by having์ ˆ๋กœ ์ค‘๋ณต ๋ฐ์ดํ„ฐ๋งŒ ์กฐํšŒํ•˜๋Š” ๊ฑด ์•„๋ž˜์ฒ˜๋Ÿผ ์กฐํšŒํ•˜๋ฉด ๋œ๋‹ค.

    SELECT NAME, sum(1) hap 
    FROM TMP_220512 t 
    GROUP BY NAME
    HAVING sum(1) > 1
    ;

    ๊ฒฐ๊ณผ๋Š” ์•„๋ž˜์ฒ˜๋Ÿผ name์ด 1๊ฐœ ์ด์ƒ์ธ ์ค‘๋ณต๋ฐ์ดํ„ฐ๊ฐ€ ์กฐํšŒ๋œ๋‹ค.

    ๋ฌธ๋“ ์œ„์˜ ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋งŒ ์ œ๊ฑฐํ•˜๊ณ  ์‹ถ์–ด์„œ ํ•ด๋ดค๋‹ค.

    ์•„๋ž˜์ฒ˜๋Ÿผ ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ฆฌ๋ฉด ๋œ๋‹ค.(๋” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์žˆ์„ ์ˆ˜๋„ ์žˆ๋‹ค.)

    ํ…Œ์ด๋ธ” ์ƒํƒœ(์ธ๋ฑ์Šค ์กด์žฌ ๋“ฑ)์— ๋”ฐ๋ผ ์˜ค๋ž˜ ๊ฑธ๋ฆด ์ˆ˜๋„ ์žˆ๋‹ค.

     

    ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋งŒ ์ œ๊ฑฐ๐Ÿ˜„

    ๋จผ์ € group by having์ ˆ๋กœ ์ค‘๋ณต๋ฐ์ดํ„ฐ๊ฐ€ 1๊ฐœ ์ด์ƒ์ธ ๋ฐ์ดํ„ฐ๋งŒ ๋ฝ‘๊ณ 

    ๊ทธ๊ฑธ ์„œ๋ธŒ์ฟผ๋ฆฌ์— ๋„ฃ์€ ํ›„ DELETE๋ฌธ์œผ๋กœ ์‚ญ์ œ

    DELETE FROM TMP_220512 t2 
    WHERE NAME IN
    (
    SELECT NAME 
    FROM TMP_220512 t 
    GROUP BY NAME 
    HAVING sum(1) > 1
    )
    ;

    ๋‚ด๊ฐ€ ์žŠ์–ด๋ฒ„๋ฆฌ์ง€ ์•Š๊ธฐ ์œ„ํ•ด์„œ ๋ฉ”๋ชจ

    ๋Œ“๊ธ€