Có một sự khác biệt quan trọng trong cách họ xử lý NULL
s
WITH T1 AS(SELECT 1 AS COL UNION SELECT NULL),
T2 AS (SELECT 2 AS COL UNION SELECT NULL)
SELECT * FROM T1
INTERSECT
SELECT * FROM T2;
.
COL
-----------
NULL
(1 row(s) affected)
.
WITH T1 AS(SELECT 1 AS COL UNION SELECT NULL),
T2 AS (SELECT 2 AS COL UNION SELECT NULL)
SELECT * FROM T1 WHERE COL IN (SELECT COL FROM T2) ;
.
COL
-----------
(0 row(s) affected)
.
WITH T1 AS(SELECT 1 AS COL UNION SELECT NULL),
T2 AS (SELECT 2 AS COL UNION SELECT NULL)
SELECT * FROM T1
EXCEPT
SELECT * FROM T2;
.
COL
-----------
1
(1 row(s) affected)
.
WITH T1 AS(SELECT 1 AS COL UNION SELECT NULL),
T2 AS (SELECT 2 AS COL UNION SELECT NULL)
SELECT * FROM T1 WHERE COL NOT IN (SELECT COL FROM T2);
.
COL
-----------
(0 row(s) affected)
Nguồn
2010-07-26 15:06:00
Cảm ơn các bạn. Bạn là một quý ông và một wiz sql. Thumbs up. – callisto