2014-11-25 1 views
2

내가이 구문을 참조하십시오실제 MySQL 운영자로부터 'IS DISTINCT FROM'입니까? 한 권의 책에서

SELECT * FROM inw WHERE id IS DISTINCT FROM 4; 

을하지만 오류 얻을 :

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DISTINCT FROM 4' at line 1

그것은을위한 대안이다 :

mysql> SELECT * FROM inw WHERE id is null OR id <> 4; 
+------+ 
| id | 
+------+ 
| NULL | 
| NULL | 
| 3 | 
+------+ 

인가를 진정한 '과 구별되는' MySQL 운영자?

+4

그건 [PostgreSQL의 (https://wiki.postgresql.org/wiki/Is_distinct_from) 구문 MySQL의 여부 :

SELECT * FROM inw WHERE not id <=> 4; 

SQLFiddle합니다 (<=>is not distinct from에 대응). – raina77ow

+0

대단히 감사합니다. –

+5

@ raina77ow :'is distinct'는 Postgres에 특화된 것이 아닙니다 (Postgres가 지원합니다). 표준 (ANSI) SQL –

답변

5

is distinct from은 SQL : 2003 표준에 정의되어 있으며 두 값을 비교할 수있는 null 허용 연산자입니다.

MySQL은 "null safe equals"연산자 인 <=>을 지원합니다. 그것이 무효화되면 동일한 행동을하게됩니다. http://sqlfiddle.com/#!2/0abf2a/3

+3

'WHERE id <=> 4 '는'WHERE id IS NULL 또는 id <> 4'와 일치하지 않는 것처럼 보입니다. –

+1

@MarcusAdams : 네, 맞습니다. 나는 'NOT'을 잊었다. –