sql 语句系列(null 值处理)[八百章之第二章]
查找只存在一个表中的数据
有两张表:
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 语句系列(null 值处理)[八百章之第二章]的更多相关文章
- sql 语句系列(多表之链)[八百章之第三章]
新增连接查询而不影响其他连接查询 请看图: 这种情况我们一般会使用左连接的方式. select e.ENAME,d.LOC,eb.RECEIVED from emp e join dept d on( ...
- (七)修改上一条SQL语句,NULL值的滤空函数nvl
修改上一条SQL语句 1.用c命令来修改(c 即 change ) 默认,光标闪烁位置指向上一条SQL语句的第一行.输入二则定位到第二行. c /错误的关键字/正确的关键字 SQL form emp; ...
- SQL order by 语句对null值排序
记order by 语句对null值排序: 目录 记order by 语句对null值排序: MySQL: Oracle: SqlServer: MySQL: 将null值放在最后 select * ...
- SQL中的NULL值
除is [not] null之外,空值不满足任何查找条件.–如果null参与算术运算,则该算术表达式的值为null.–如果null参与比较运算,则结果可视为false.在SQL-92中可看成unkno ...
- SQL语句中=null和is null
平时经常会遇到这两种写法:IS NOT NULL与!=NULL.也经常会遇到数据库有符合条件!=NULL的数据,但是返回为空集合.实际上,是由于对二者使用区别理解不透彻. 默认情况下,推荐使用 IS ...
- 数据库 SQL :有关 NULL 值引发 TRUE、FALSE、UNKNOW 三值逻辑
在 Java.C# 中,相信如果是 boolean 类型值,只有两种选择 true.false.然而,在 SQL 查询中,NULL 值的引入,使得新增了 UNKNOW ,因此,就产生了 TRUE.FA ...
- 【SQL】含有NULL值的排序
查询结果中有NULL值,当进行升序排序时,NULL值默认为“最大值”,排在最后面.要想改变NULL值的显示顺序,只需要在SQL语句后面加上NULLS FIRST(排在前面),NULLS LAST(排在 ...
- 解决用 VB 中用 ADO 访问 数据库时 SQL 查询处理 Null 值的问题( 使用 iff(isNull(字段), 为空时的值,不为空时的值) 来处理)
程序的环境是 VB6 + ADO + Access,在用 SQL 语句查询时,希望把两个字段合并成一个字段,但其中一个字段 Null 值直接导致两个字段合并后也变成了 Null 值.之前只能用 VB ...
- sp_executesql得到执行sql语句的返回值
执行 sql语句,得到 变量的值 ' declare @Partition int; ); ); SET @SQLString = N'SELECT @RangeKeyOUT = $PARTITION ...
随机推荐
- Rancher安装多节点高可用(HA)
Rancher版本:Rancher v1.0.1 基本配置需求 多节点的HA配置请参照单节点需求 节点需要开放的端口 全局访问:TCP 端口22,80,443,18080(可选:用于在集群启动前 查看 ...
- 吴裕雄--天生自然python编程:实例(3)
# 返回 x 在 arr 中的索引,如果不存在返回 -1 def binarySearch (arr, l, r, x): # 基本判断 if r >= l: mid = int(l + (r ...
- Web窗体--控件
服务器基本控件:button: text属性linkbutton:text属性,它是一个超链接模样的普通buttonhyperlink: navigateurl:链接地址,相当于<a>标签 ...
- 腾讯云服务器(centos7.2)上安装MySQL
1.到MySQL官网找到相应的版本 https://dev.mysql.com/downloads/repo/yum/ 找到下面的Linux7,即CentOS7(CentOS是Red Hat旗下的)点 ...
- 使用Connector / Python连接MySQL/查询数据
使用Connector / Python连接MySQL connect()构造函数创建到MySQL服务器的连接并返回一个 MySQLConnection对象 在python中有以下几种方法可以连接到M ...
- 阿里巴巴-德鲁伊druid连接池配置
阿里巴巴推出的国产数据库连接池,据网上测试对比,比目前的DBCP或C3P0数据库连接池性能更好,Druid与其他数据库连接池使用方法基本一样(与DBCP非常相似),将数据库的连接信息全部配置给Data ...
- 吴裕雄--天生自然KITTEN编程:小鼠数学题
- 严谨与特色并行——WSDM 2015大会见闻记
2015大会见闻记" title="严谨与特色并行--WSDM 2015大会见闻记"> 第8届ACM网络搜索与数据挖掘会议(ACM International Co ...
- 一句话看懂redux
一个是存储在 store 里面的 state,另一个是每一次调用 dispatch 所传进来的 action.reducer 的作用,就是对 dispatch 传进来的 action 进行处理,并将结 ...
- [BZOJ 1412][ZJOI 2009] 狼和羊的故事
题目大意 有一个 (n times m) 的网格,每一个格子上是羊.狼.空地中的一种,羊和狼可以走上空地.现要在格子边上建立围栏,求把狼羊分离的最少围栏数. (1 leqslant n, ; m le ...