2014-06-19 1 views
0

내 쿼리는 괄호로 묶어야합니다 : 왼쪽으로 가입 AND OR 조건은

select * from A left join B on a.id = b.id 
and a. id <> "N/A" and b.id <> "N/A" 
OR 
A.ID = "N/A" AND B.ID = "N/A" AND A.COL2 IS NOT NULL 

는 기본적으로 나는이 OR 조건 중 하나가 충족 된 경우에만 id 열을 가입하려는.
이 쿼리가 정확한지 또는 괄호 안에 그 부분을 포함해야합니까?

a. id <> "N/A" and b.id "N/A" 
OR 
A.ID = "N/A" AND B.ID = "N/A" AND A.COL2 IS NOT NULL 
+0

귀하는 귀하의 요구 사항에 따라 괄호를 써야합니다. 허황 조건이 작성되었습니다. – user2989408

+1

"N/A"가 'N/A'라고 가정합니다. 맞습니까? –

답변

0

AND는 (유사 "*+ 앞에 오는") OR보다 우선 순위가 높습니다.

따라서이 표현 :

a. id <> "N/A" AND b.id <> "N/A" 
OR 
A.ID = "N/A" AND B.ID = "N/A" AND A.COL2 IS NOT NULL 

은 ...

(a. id <> "N/A" AND b.id <> "N/A") 
OR 
(A.ID = "N/A" AND B.ID = "N/A" AND A.COL2 IS NOT NULL) 

그러나 a.id = b.id 항상 진실해야하기 때문에, 당신이해야하는 것과 같습니다 괄호

적어도 장소 한 쌍
SELECT * FROM A LEFT JOIN B ON 
    a.id = b.id AND 
    (
    a. id <> "N/A" AND b.id <> "N/A" 
    OR 
    A.ID = "N/A" AND B.ID = "N/A" AND A.COL2 IS NOT NULL 
)