zoukankan      html  css  js  c++  java
  • NULL对IN的查询的影响及解决示例.sql

    --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
  • 相关阅读:
    Javascript事件模型
    关于node.js(一)
    JavaScript表单编程总结
    使用Dom操纵样式表
    文档对象模型Dom
    浏览器对象模型BOM总结
    在javascript中正则表达式的概念与应用
    CSS块级元素、内联元素概念
    HTTP协议
    [学习记录]BFS思路详解
  • 原文地址:https://www.cnblogs.com/shihao/p/2509625.html
Copyright © 2011-2022 走看看