你真的会玩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
相关文章
- mysql多列 in多个字段优化sql语句
- 【SQL 学习】分析函数之RANK() DENSE_RANK ()
- PHP函数 addslashes() 和 mysql_real_escape_string() 的区别 && SQL宽字节,绕过单引号注入攻击
- SQL Server基础Sql语句复习
- SQL 根据指定字符分隔字符串
- 【学习总结】SQL的学习-1-初识数据库与sql
- sql 中 '' 与 null 的区别
- SQL:基础查阅手册
- 你真的会玩SQL吗?EXISTS和IN之间的区别
- 你真的会玩SQL吗?EXISTS和IN之间的区别
- 读书笔记--SQL必知必会17--创建和操纵表
- sql语句中#{}和${}的区别
- SQL IN ANY ,(all any) 区别
- 把运行在 Docker 容器内的 Microsoft SQL 服务器部署到 SAP Kyma 中
- SQL Server中clustered与nonclustered的区别
- SQL SERVER服务器链接连接(即sql server的跨库连接)
- Atitit import sql fun 重要的sql功能扩展 ext 目录 1.1. Insert merge1 1.2. Insert set1 1.2.1. 13.2.5. LOAD
- Sql:成功解决将sql输出的datetime时间格式转为常规格式
- SQL VQ11 找出sql类题目的单次最大刷题数
- SQL中Where与Having的区别
- Spark SQL 源代码分析之 In-Memory Columnar Storage 之 in-memory query
- SQLite的SQL语法
- MySQL和SQL Server一些基本用法区别
- 图解SQL的inner join、left join、right join、full outer join、union、union all的区别
- 010-Hadoop Hive sql语法详解5-HiveQL与SQL区别
- SQL Server 性能调优
- Oracle PL/SQL中的循环处理(sql for循环)
- SQL注入 Sqli-labs-Less-21(笔记)——还是回显注入 使用union select即可 但是要注意sql括号闭合 也可以报错注入
- 如何利用SQL创建与修改列的说明信息(备注信息)详解