표 DECLARATION을 표시합니다. CONTINENT를 대륙 번호로 사용하는 것 같습니다. 그런 다음 PRIMARY KEY 및 NOT NULL 옵션으로 표시되어 있는지 확인해야합니다. 내가 realyl은 당신이 NULL이 SQL에 가지고있는 매우 특별한 의미를 잊어 버렸다고 생각합니다.
저는 Firebird 2.5.1 SQL 서버에서 예제를 만듭니다. 이제
CREATE TABLE WORLD (
CONTINENT INTEGER,
NAME VARCHAR(20),
POPULATION INTEGER
);
INSERT INTO WORLD (CONTINENT, NAME, POPULATION) VALUES (NULL, 'null-id', 100);
INSERT INTO WORLD (CONTINENT, NAME, POPULATION) VALUES (1, 'normal 1', 10);
INSERT INTO WORLD (CONTINENT, NAME, POPULATION) VALUES (2, 'normal 2', 200);
INSERT INTO WORLD (CONTINENT, NAME, POPULATION) VALUES (3, 'null-pop', NULL);
INSERT INTO WORLD (CONTINENT, NAME, POPULATION) VALUES (4, 'normal 4', 110);
COMMIT WORK;
대륙을 가진 것은 어디있을 것 NULL IS,의는 귀하의 요청을 시도하고 1 행 있는지 확인하자 다음
SELECT continent, population FROM world
WHERE continent IN (
SELECT continent FROM world
WHERE population > 100)
CONTINENT POPULATION
2 200
4 110
및
SELECT continent, population FROM world
WHERE continent NOT IN (
SELECT continent FROM world
WHERE population > 100)
CONTINENT POPULATION
1 10
3 <NULL>
를 요청의 논리에 의해 행 ID가 CONTINENT라고 가정하면, NOT-NULL로 설정하고 [NOT] IN 조건으로 볼 수없는 행은 없을 것입니다.
SELECT continent, population FROM world
WHERE NOT (population > 100)
CONTINENT POPULATION
<NULL> 100
1 10
SELECT continent, population FROM world
WHERE population > 100
CONTINENT POPULATION
2 200
4 110
누락 된 행이 인구 컬럼에 대한 하나 가지고 NULL했다이 시간 :
지금, 평면 쿼리로이 다시 문구를 보자.
그런 다음
FreshPrinceOfSO는 EXISTS 절 사용하여 제안했다.잠재적으로 대부분의 느린 (비효율적 인) 쿼리 계획으로 끝날 수도 있지만 적어도 SQL에서 NULL 값의 특별한 의미를 숨 깁니다. 내가 올바르게 읽고 있어요 경우
SELECT continent, population FROM world w_ext
WHERE EXISTS (
SELECT continent FROM world w_int
WHERE (w_int.population > 100) and (w_int.continent = w_ext.continent)
)
CONTINENT POPULATION
2 200
4 110
SELECT continent, population FROM world w_ext
WHERE NOT EXISTS (
SELECT continent FROM world w_int
WHERE (w_int.population > 100) and (w_int.continent = w_ext.continent)
)
CONTINENT POPULATION
<NULL> 100
1 10
3 <NULL>
개별 하위 쿼리의 결과를 살펴 보셨습니까? – Yuck
"population <25000000"및 "population> 25000000"은 모든 경우를 다루지는 않습니다. –
아마도 남극 대륙 이외에 25,000,000보다 작은 인구를 가진 대륙이 없으므로 '... in (null)'을하려고합니다. –