?? 6.1.1 null對(duì)in的查詢的影響及解決示例.sql
字號(hào):
--1. NULL 對(duì) IN(NOT IN) 查詢的影響
--測(cè)試數(shù)據(jù)
DECLARE @1 TABLE(col1 int)
INSERT @1 SELECT 1
UNION ALL SELECT NULL
UNION ALL SELECT 2
DECLARE @2 TABLE(col1 int)
INSERT @2 SELECT 1
--查詢
SELECT [@1總記錄數(shù)]=COUNT(*) FROM @1
--結(jié)果: 3
SELECT [@1在@2表中存在的記錄數(shù)]=COUNT(*) FROM @1 a
WHERE col1 IN(SELECT col1 FROM @2)
--結(jié)果: 1
SELECT [@1在@2表中存在的記錄數(shù)]=COUNT(*) FROM @1 a
WHERE col1 NOT IN(SELECT col1 FROM @2)
--結(jié)果: 1
--在@2中插入一條NULL值
INSERT @2 SELECT NULL
SELECT [@1在@2表中存在的記錄數(shù)]=COUNT(*) FROM @1 a
WHERE col1 IN(SELECT col1 FROM @2)
--結(jié)果: 1
SELECT [@1在@2表中存在的記錄數(shù)]=COUNT(*) FROM @1 a
WHERE col1 NOT IN(SELECT col1 FROM @2)
--結(jié)果: 0
GO
--2. 使用 EXISTS 代替IN
--測(cè)試數(shù)據(jù)
DECLARE @1 TABLE(col1 int)
INSERT @1 SELECT 1
UNION ALL SELECT NULL
UNION ALL SELECT 2
DECLARE @2 TABLE(col1 int)
INSERT @2 SELECT 1
UNION ALL SELECT NULL
SELECT [@1在@2表中存在的記錄數(shù)]=COUNT(*)
FROM @1 a
WHERE EXISTS(SELECT * FROM @2 WHERE col1=a.col1)
--結(jié)果: 1
SELECT [@1在@2表中存在的記錄數(shù)]=COUNT(*)
FROM @1 a
WHERE NOT EXISTS(SELECT * FROM @2 WHERE col1=a.col1)
--結(jié)果: 2
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -