WHERE 이부분에서 @INPUT 값이 NULL 이거나 0 이면, LEFT OUTER JOIN 한 테이블에 상관없이 A 테이블 전체 조회.
@INPUT 값이 1이면, A와 B를 조인한 결과값만 나왔으면 합니다.
좋은 방법좀 알려주세요~
by 마농
[2022.01.05 12:11:19]
SELECT *
FROM a
LEFT OUTER JOIN b
ON a.aa = b.bb
WHERE (@input = 0)
OR (@input = 1 AND b.bb IS NOT NULL)
;
by 한번사는인생
[2022.01.05 12:14:24]
이 방법이 최선인가요?ㅠㅠ저도 이 방법을 생각해보긴 했는데
혹시나 더 좋은 방법이 있을까 싶어서요.ㅜ.ㅜ
by 마농
[2022.01.05 12:23:51]
최선의 기준이 뭘까요?
다양한 방법이 있을 수 있을 것입니다.
구문을 최대한 간결하게 할 것인지?
효율을 최대한 높일 것인지?
질문에는 * 를 사용하는데 필요한 컬럼명만 사용하는게 좋습니다.
필요한 컬럼이 뭔지에 따라 효율적인 쿼리가 달라질 수도 있습니다.
테이블의 인덱스 정보나 분포도, 데이터량, 테이블간의 관계 등 다양한 정보도 확인해야 합니다.
by 한번사는인생
[2022.01.05 17:50:54]
역시 날카로우십니다.
답변 고맙습니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.