你真的会玩SQL吗?EXISTS和IN之间的区别
EXISTS和IN之间的区别
1.EXISTS只返回TRUE或FALSE,不会返回UNKNOWN。
2.IN当遇到包含NULL的情况,那么就会返回UNKNOWN。
当查询的列包含NULL时,NOT EXISTS正常返回TRUE或FALSE。
而NOT IN可能返回空集,如下
1:val IN(val1,val2,...,NULL),永远不会返回FALSE,而是返回TRUE或UNKNOWN。
2:val NOT IN(val1,val2,...,NULL),永远不会返回TRUE,而是返回NOT TRUE或NOT UNKNOWN。
看个示例:
Test1表
select
where
返回
select
where
返回
select
where
返回
select
where
返回空集
练习
以下对就返回哪三值?
答案
View Code
custid
----------- ----------------------------------------
21
23
33
36
43
51
85
参考SQL:
--answer:
select custid, companyname
from Sales.Customers as C
where EXISTS
相关文章
- 详解SQL中Group By的用法
- SQL关于IN和EXISTS的用法和区别的比较详解数据库
- sql where 与 having的区别详解数据库
- MySQL动态SQL:实现动态查询的高效方式。(mysql动态sql)
- SQL与MySQL的异同比较(sql与mysql的区别)
- Oracle 日期SQL:超简单查询技巧(oracle日期sql)
- 处理Oracle批量SQL处理:加快数据处理速度(oracle批量sql)
- sql server: 不同数据库管理系统比较(mysqlcvs)
- 如何使用MySQL导出SQL语句?(mysql导出sql语句)
- SQL连接MySQL:从零开始(sql连接mysql)
- 文件MySQL导入SQL文件教程(mysql怎么导入sql)
- SQL和MSSQL:异曲同工的数据库系统(sql和mssql的区别)
- 区别对比分析:SQL与MSSQL的异同(sql和mssql的)
- SQL与MSSQL:各有自身特性的不同之处(sql与mssql的区别)
- SQL Server小技巧:快速提升效率(sqlserver小技巧)
- 量SQL Server实现数据偏移量获取(sqlserver偏移)
- MySQL SQL 平方详解 常见方法与实现方式(mysql中sql中平方)
- MySQL数据库中的SQL级别详解(mysqlsql级别)
- MySQL实现一对多关系的SQL查询方法(mysql一对多sql)
- 解决Oracle SQL遭遇锁死的思路(oracle sql锁死)
- Redis与SQL区别与比较(redis跟sql的区别)
- sql查询本年、本月、本日记录的语句,附SQL日期函数
- Sql学习第一天——SQL练习题(建表/sql语句)