分类目录

链接

2012年 2月
 12345
6789101112
13141516171819
20212223242526
272829  

近期文章

热门标签

新人福利,免费薅羊毛

现在位置:    首页 > SQL Server > 正文
NULL对IN查询的影响
SQL Server 暂无评论 阅读(2,071)
  1. --1. NULL  INNOT IN 查询的影响
  2. --测试数据
  3. DECLARE @1 TABLE(col1 int)
  4. INSERT @1 SELECT 1
  5. UNION ALL SELECT NULL
  6. UNION ALL SELECT 2
  7.  
  8. DECLARE @2 TABLE(col1 int)
  9. INSERT @2 SELECT 1
  10.  
  11. --查询
  12. SELECT [@1总记录数]=COUNT(*) FROM @1
  13. --结果: 3
  14.  
  15. SELECT [@1在@2表中存在的记录数]=COUNT(*) FROM @1 a
  16. WHERE col1 IN(SELECT col1 FROM @2)
  17. --结果: 1
  18.  
  19. SELECT [@1在@2表中存在的记录数]=COUNT(*) FROM @1 a
  20. WHERE col1 NOT IN(SELECT col1 FROM @2)
  21. --结果: 1
  22.  
  23. --在@2中插入一条NULL
  24. INSERT @2 SELECT NULL
  25. SELECT [@1在@2表中存在的记录数]=COUNT(*) FROM @1 a
  26. WHERE col1 IN(SELECT col1 FROM @2)
  27. --结果: 1
  28.  
  29. SELECT [@1在@2表中存在的记录数]=COUNT(*) FROM @1 a
  30. WHERE col1 NOT IN(SELECT col1 FROM @2)
  31. --结果: 0
  32. GO
  33.  
  34.  
  35. --2. 使用 EXISTS 代替IN
  36. --测试数据
  37. DECLARE @1 TABLE(col1 int)
  38. INSERT @1 SELECT 1
  39. UNION ALL SELECT NULL
  40. UNION ALL SELECT 2
  41.  
  42. DECLARE @2 TABLE(col1 int)
  43. INSERT @2 SELECT 1
  44. UNION ALL SELECT NULL
  45.  
  46. SELECT [@1在@2表中存在的记录数]=COUNT(*) 
  47. FROM @1 a
  48. WHERE EXISTS(SELECT * FROM @2 WHERE col1=a.col1)
  49. --结果: 1
  50.  
  51. SELECT [@1在@2表中存在的记录数]=COUNT(*) 
  52. FROM @1 a
  53. WHERE NOT EXISTS(SELECT * FROM @2 WHERE col1=a.col1)
  54. --结果: 2

============ 欢迎各位老板打赏~ ===========

本文版权归Bruce's Blog所有,转载引用请完整注明以下信息:
本文作者:Bruce
本文地址:NULL对IN查询的影响 | Bruce's Blog

发表评论

留言无头像?