6
我已经写了并且通过了70-433(SQL 2008 MCTS考试),并且当我意识到我一直在做什么INTERSECT
与WHERE IN
子查询以及EXCEPT
与WHERE NOT IN
子查询。INTERSECT和WHERE IN有什么区别?
使用新命令而不是子查询有什么区别吗?
我已经写了并且通过了70-433(SQL 2008 MCTS考试),并且当我意识到我一直在做什么INTERSECT
与WHERE IN
子查询以及EXCEPT
与WHERE NOT IN
子查询。INTERSECT和WHERE IN有什么区别?
使用新命令而不是子查询有什么区别吗?
INTERSECT
和EXCEPT
比较返回的行中的所有选定值,而WHERE IN
和WHERE NOT IN
一次只比较一列。
SELECT name,date from customers
EXCEPT
SELECT name, date from orders
有它们处理NULL
小号
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)
谢谢你,先生。你是一个绅士和一个数据库管理员。 竖起大拇指。 – callisto 2010-07-26 14:05:56