where 절 조건 문의 0 1 397

by 마나공 [SQL Query] [2021.11.27 02:33:58]


BBB_TBL 의  CUST_ID가 NULL이 아니면,  CUST_ID로 비교하고,

CUST_ID가 NULL이면, SVC_ID로 비교하려고 합니다. 

아래 세가지중 어떤 것이 맞을까요?

혹시, 1번으로 하면 안되는 이유 있을까요??

(초보라 죄송합니다. )

1) SELECT *

FROM AAA_TBL AAA, BBB_TBL BBB

WHERE ((BBB.CUST_ID IS NOT NULL AND AAA.CUST_ID = BBB.CUST_ID ) OR ( BBB.CUST_ID IS NULL AND AAA.SVC_ID = BBB.SVC_ID)) ;

 

2) SELECT *

FROM AAA_TBL AAA, BBB_TBL BBB

WHERE CASE WHEN BBB.CUST_ID IS NOT NULL THEN  AAA.CUST_ID = BBB.CUST_ID

                  WHEN BBB.CUST_ID IS NULL THEN AAA.SVC_ID = BBB.SVC_ID

            END

 

3)  SELECT *

FROM AAA_TBL AAA, BBB_TBL BBB

WHERE ( CASE WHEN BBB.CUST_ID IS NOT NULL AND  AAA.CUST_ID = BBB.CUST_ID THEN 'OK'

                    WHEN BBB.CUST_ID IS NULL AND  AAA.SVC_ID = BBB.SVC_ID THEN 'OK'

            END ) = 'OK'

 

by 마농 [2021.11.27 22:21:03]

의미상으론 다 맞습니다.

다만 2번은 MySQL 에서만 허용되는 구문입니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입