๐Ÿ“† Today I Learned(๊ฐœ๋ฐœ์–ธ์–ดํ•™์Šต)/ORACLE(DB)

[ORACLE] WHERE์ ˆ ํ•œ ์ค„์— ์กฐ๊ฑด ์—ฌ๋Ÿฌ ๊ฐœ

๊ฐœ์š” : 

์—…๋ฌด ์ˆ˜ํ–‰์ค‘์— ํ…Œ์ด๋ธ”์กฐํšŒํ• ๋•Œ ํŠน์ • ์ปฌ๋Ÿผ์— ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๋Š” ์กฐ๊ฑด๊ณผ NULL์ธ ๋ฐ์ดํ„ฐ๋“ค์„ ๊ฐ™์ด ์กฐํšŒํ•ด์•ผ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ฒผ๋‹ค.

 

์ฒ˜์Œ์—๋Š” WHERE์ ˆ์— NOT IN()์„ ์‚ฌ์šฉํ•ด ์กฐํšŒํ•˜์˜€์œผ๋‚˜ COUNT()๋ฅผ ์‚ฌ์šฉํ–ˆ์„๋•Œ ํ™•์ธํ•ด๋ณธ ๋ฐ์ดํ„ฐ ์ˆซ์ž์™€ ๋งž์ง€ ์•Š์•˜๋‹ค.

๊ทธ๋ž˜์„œ AND์ ˆ์„ ์ถ”๊ฐ€ํ•ด IS NULL์„ ์กฐํšŒํ–ˆ์œผ๋‚˜ ๋‹น์—ฐํ•˜๊ฒŒ๋„ ๋‚˜์˜ค์ง€ ์•Š์•˜๋‹ค. ( ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š”๋ฐ NULL์ด๋ฉด์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์–ด์•ผํ•œ๋‹ค๋‹ˆ ๋ง์ด์•ˆ๋˜์ง€;; )

 

AND ๋Œ€์‹ ์— OR๋ฅผ ์“ฐ๋ฉด ๋˜์ง€์•Š์„๊นŒํ•ด์„œ ์‚ฌ์šฉํ•ด๋ดค์ง€๋งŒ ๋˜๋Š”์ด๋ผ๋Š” ๋œป์ด๊ธฐ ๋•Œ๋ฌธ์— ์›ํ•˜์ง€์•Š๋Š” ๋ฐ์ดํ„ฐ๊นŒ์ง€๋„ ์กฐํšŒ๊ฐ€ ๋˜์—ˆ๋‹ค.

 

ํ•ด๊ฒฐ :

ex) ์‹คํŒจ

SELECT 
	*
FROM
    [ํ…Œ์ด๋ธ”๋ช…] A   
LEFT JOIN
    [ํ…Œ์ด๋ธ”๋ช…] B
        ON B.[์กฐ์ธ์ปฌ๋Ÿผ] = A.[์กฐ์ธ์ปฌ๋Ÿผ]   
WHERE   [์กฐ๊ฑด์ปฌ๋Ÿผ]  = [์กฐ๊ฑด๊ฐ’] 
AND [์กฐ๊ฑด์ปฌ๋Ÿผ] = [์กฐ๊ฑด๊ฐ’]
AND A.[์กฐ๊ฑด์ปฌ๋Ÿผ] NOT IN ('37','38','39','40','41','42','43','44','65','49','48','105')
-- ๊ฒฝ์šฐ1 AND A.[์กฐ๊ฑด์ปฌ๋Ÿผ] IS NULL
-- ๊ฒฝ์šฐ2 OR  A.[์กฐ๊ฑด์ปฌ๋Ÿผ] IS NULL
AND [์กฐ๊ฑด์ปฌ๋Ÿผ] = [์กฐ๊ฑด๊ฐ’];

ex) ์„ฑ๊ณต

SELECT 
	*
FROM
    [ํ…Œ์ด๋ธ”๋ช…] A   
LEFT JOIN
    [ํ…Œ์ด๋ธ”๋ช…] B
        ON B.[์กฐ์ธ์ปฌ๋Ÿผ] = A.[์กฐ์ธ์ปฌ๋Ÿผ]   
WHERE   [์กฐ๊ฑด์ปฌ๋Ÿผ]  = [์กฐ๊ฑด๊ฐ’] 
AND [์กฐ๊ฑด์ปฌ๋Ÿผ] = [์กฐ๊ฑด๊ฐ’]
AND (A.[์กฐ๊ฑด์ปฌ๋Ÿผ] NOT IN ('37','38','39','40','41','42','43','44','65','49','48','105')
OR  A.[์กฐ๊ฑด์ปฌ๋Ÿผ] IS NULL)
AND [์กฐ๊ฑด์ปฌ๋Ÿผ] = [์กฐ๊ฑด๊ฐ’];

- ์กฐ๊ฑด์ ˆ์— ()๋ฅผ ์น˜๋ฉด ํ•˜๋‚˜์˜ ์กฐ๊ฑด์œผ๋กœ ์ธ์‹ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์œ„ ์ฟผ๋ฆฌ์˜ ๊ฒฝ์šฐ ๋‘๊ฐ€์ง€์˜ ์กฐ๊ฑด์ด ๋™์‹œ์— ๊ฒ€์ฆ๋˜์ง€๋งŒ ํ•œ์ค„์”ฉ ๋‹ค๋กœ ์ ์šฉ๋˜์–ด์žˆ์„ ๋•Œ๋Š” ์œ—์ค„์ด ์‹คํ–‰๋˜๊ณ  ๋‚˜์„œ ๋‹ค์Œ์ค„์ด ์‹คํ–‰๋˜๊ธฐ๋•Œ๋ฌธ์— ๋˜์ง€ ์•Š์•˜๋˜๊ฒƒ๊ฐ™๋‹ค.

 

- ๊ธฐ๋ณธ์ ์ธ๊ฒƒ์ด์ง€๋งŒ ๋ง‰์ƒ ์จ๋จน์œผ๋ ค๋‹ˆ ์ƒ๊ฐ์ด ์•ˆ๋‚˜๋Š”๊ฑด ์™œ์ง€...