sql 语句系列(null 值处理)[八百章之第二章]
SQL 处理 系列 语句 null 第二章 八百
2023-09-14 08:59:24 时间
查找只存在一个表中的数据
有两张表:
EMP:
select * from emp
DEPT:
他们有共同的属性:deptno
现在要查询EMP 中的deptno不等于DEPTNO的deptno项。
解析:
select distinct DEPTNO from EMP where DEPTNO not in (
select DEPTNO from DEPT
)
注意:
因为需要查询的是DEPTNO,所以需要排除掉重复项。
其次上面的写法,如果DEPTNO在DEPT有null项上面的是错误的。
我在dept 中加入了 null 值:
得到的结果为空。
这里面关键点在于null的判断是 is 和 not is判断的。
看下not in 的展开式:
not in (DEPTNO=10||DEPTNO=20||DEPTNO=30||DEPTNO=40||DEPTNO=null)
本来有结果有一个50是不属于他们的。
那么把50输入进去会怎么样?
not in(false||false||false||false||false||null)
结果是not in (null)
我尝试使用:
select distinct DEPTNO from EMP where DEPTNO not in(null)
结果也是空,说明转换逻辑是正确的。
那么问题可以回到:
select distinct DEPTNO from EMP where DEPTNO!=null
因为null值不能通过!=判断,这样是不会返回结果的。
下面是有null值的时候的写法:
select distinct DEPTNO from EMP e where not exists(
select null from DEPT where e.DEPTNO=DEPT.DEPTNO
)
下面的not exists只需判断有和无,那么select null 换成其他也一样。
从一个表检索与另一个表不相关的行
这一个例子和上一个非常相似。
查找出那些部门没有员工:
select d.* from DEPT d left outer join EMP e on e.DEPTNO=d.DEPTNO where e.DEPTNO is null
解析:
和上面不同的是上面是针对列,而这个是针对行。
下一章
与外表之间
相关文章
- SQL语句面试题目_sql基础知识面试题
- 创建索引sql 语句「建议收藏」
- ORA-31083: error while creating SQL type “string”.”string” ORACLE 报错 故障修复 远程处理
- SQL开发知识:Mysql设计表主键为何不用uuid
- SQL开发知识:Oracle查询sql语句错误信息的控制和定位处理方式
- MySQL Error number: MY-011708; Symbol: ER_GRP_RPL_SQL_SERVICE_SERVER_ACCESS_DENIED_FOR_USER; SQLSTATE: HY000 报错 故障修复 远程处理
- SQL Server 2016 CTP2.2安装配置方法图文教程
- MySQL Error number: MY-013096; Symbol: ER_RPL_SLAVE_SQL_THREAD_STOP_CMD_EXEC_TIMEOUT; SQLSTATE: HY000 报错 故障修复 远程处理
- 检查SQL Server中处理空值的方法(sqlserver空值)
- Oracle中的精彩递归SQL(oracle递归sql)
- 提升性能:Oracle SQL语句优化技巧(oraclesql语句优化)
- 深度挖掘MSSQL:从SQL手工注入谈开始(sql手工注入mssql)
- 如何使用MySQL定时自动执行SQL语句(mysql定时执行sql)
- SQL Server开放更多端口,打开更多通道(sqlserver加端口)
- SQL Server:构建全球数据桥梁(sqlserver全世界)
- MSSQL恢复数据:从SQL文件进行还原(mssql还原sql文件)
- azure sql比较分析AWS MySQL 与 Azure SQL的区别(aws mysql 还是)
- MySQL数据上传如何处理大型SQL文件大小(mysql上传sql大小)
- MySQL 处理上下级关系的高效 SQL 查询方法(mysql 上下级sql)
- MySQL报错无法执行SQL,该如何解决(mysql不能执行sql)
- 实现数据库优化Oracle中利用SQL语句实现数据库性能优化(oracle中执行sql)
- Oracle SQL实现转置-简单快捷(oracle sql转置)