나는 TSQL 쿼리 작성 방법을 배우고 있습니다. 나는 그들을 깊이 이해하려고 노력하고있다. 튜토리얼에서 얻은이 쿼리는 두 번째 WHERE 절에서 NOT NULL을 확인해야한다.IN 키워드를 사용하여 쿼리
SELECT *
FROM Person.Person AS p
WHERE NOT p.BusinessEntityID IN (
SELECT PersonID
FROM Sales.Customer
WHERE PersonID IS NOT NULL);
이제 Sales.Customer 테이블에는 PersonID에 대한 일부 NULL 값이 있습니다. 하위 쿼리에서이 WHERE 절을 제거하면 결과가 반환되지 않습니다. 문제에 대한 내 잘못한 생각에, 하위 쿼리가 NULL을 반환하면 단순히 외부 쿼리에서 WHERE 절의 조건을 충족시키지 못할 것이라고 생각합니다. PersonID가 NULL이 아닌 행에 대한 결과 세트를 가져올 것으로 예상됩니다. 왜이 추론에 따라 작동하지 않습니까?
이 쿼리는 아직 고객이 아닌 사람들의 결과를 생산하기 위해 노력하고있는 것으로 보인다. Persons.Person에서 BusinessEntityId가 NULL이 아닌 값 목록에없는 행 목록을 제공한다고 말하고 있습니다. 하위 쿼리는 Persons가 null이 아닌 위치를 명시하여 공백 집합이나 null이 아닌 값 집합을 반환합니다. –
SQL Server에서 NULL 값을 처리하는 방법을 이해하는 것이 새 사용자에게는 어려울 수 있습니다. NULL 값은 값을 알 수 없음을 나타냅니다. NULL 값은 빈 값 또는 0 값과 다릅니다. 두 개의 null 값이 동일하지 않습니다. 두 개의 널값 간 또는 널값과 다른 값 사이의 비교는 각 NULL의 값을 알 수 없기 때문에 알 수 없음을 리턴합니다. http://technet.microsoft.com/en-us/library/ms191504(v=sql.105).aspx – DMason
@DMason 귀하는 답변으로 의견을 작성해야합니다. – Crono