2010-12-27 5 views
3

에 합산하지 않아도 가능하다 어떻게 'WHERE STH하지 SELECT' 'WHERE STH SELECT'그 사람이 개 쿼리의 결과 :MySQL의 - 결과는 전체 테이블

SELECT * FROM `workers` WHERE `name` = 'Smith` 

SELECT * FROM `workers` WHERE NOT `name` = 'Smith` 

은 전체 테이블의 합계가 아닙니다 workers?

답변

7

NULL (name) 필드가 어느 쿼리에도 포함되지 않기 때문에.

SQL이 사용하는 3 진 논리에서 NULL = 'Smith'NOT NULL = 'Smith'은 모두 NULL으로 평가되고 필터링됩니다.

사용 NULL - 안전 비교 연산자, <=> :

SELECT * FROM `workers` WHERE `name` <=> 'Smith` 

SELECT * FROM `workers` WHERE NOT `name` <=> 'Smith`