2014-05-09 2 views
0

문 또는 문에서 두 값이 모두 null이 아닌 경우 어떻게됩니까?MySQL OR 연산자가 두 개의 null이 아닌 결과

mysql이 매번 왼쪽을 사용합니까? 아니면 mysql이 오른쪽을 사용할 가능성이 있습니까? 값이 null 경우

SELECT * 
FROM posts p 
WHERE parent_id = ? OR id = ? 
ORDER BY date 
DESC LIMIT 1 
+0

물론 mysql이 오른쪽을 사용합니다. 왜 안돼? 일치하는 parent_id가 없을 때만 id의 확인을 원하십니까? – VMai

+1

가능한 단락 논리 평가 연산자 (http://stackoverflow.com/questions/16969780/short-circuit-logic-evaluation-operators) –

답변

0
  1. = 다음과의 비교는 실패 할 것이다. 대신 IS을 사용하십시오.
  2. 먼저 어떤 조건이 먼저 실행되고 DB가 필터링을 처리하는지 알 수 없습니다. 이는 런타임시 옵티 마이저에 달려 있습니다.
+0

COALESCE를 사용하는 쿼리를 만들었습니다 (p.parent_id, p. id). paren_id가 NULL이면 기본 ID를 사용합니다. – user2429266