--1. NULL 对 IN(NOT IN) 查询的影响
--测试数据
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总记录数]=COUNT(*) FROM @1
--结果: 3

SELECT [@1在@2表中存在的记录数]=COUNT(*) FROM @1 a
WHERE col1 IN(SELECT col1 FROM @2)
--结果: 1

SELECT [@1在@2表中存在的记录数]=COUNT(*) FROM @1 a
WHERE col1 NOT IN(SELECT col1 FROM @2)
--结果: 1

--在@2中插入一条NULL值
INSERT @2 SELECT NULL
SELECT [@1在@2表中存在的记录数]=COUNT(*) FROM @1 a
WHERE col1 IN(SELECT col1 FROM @2)
--结果: 1

SELECT [@1在@2表中存在的记录数]=COUNT(*) FROM @1 a
WHERE col1 NOT IN(SELECT col1 FROM @2)
--结果: 0
GO


--2. 使用 EXISTS 代替IN
--测试数据
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表中存在的记录数]=COUNT(*)
FROM @1 a
WHERE EXISTS(SELECT * FROM @2 WHERE col1=a.col1)
--结果: 1

SELECT [@1在@2表中存在的记录数]=COUNT(*)
FROM @1 a
WHERE NOT EXISTS(SELECT * FROM @2 WHERE col1=a.col1)
--结果: 2

相关文章:

  • 2021-12-12
  • 2021-08-12
  • 2022-01-30
  • 2021-06-21
  • 2021-08-03
  • 2021-09-04
猜你喜欢
  • 2021-12-07
  • 2021-10-10
  • 2021-11-20
  • 2021-11-26
  • 2022-12-23
  • 2021-04-12
相关资源
相似解决方案