谓词
- 是一种特殊函数,返回布尔值true/false/
- 分为全称量词和存在量词
- 全称量词:所有x都满足条件P
- 存在量词:存在一个极其以上x满足条件P
- SQL一般不存在全称量词,而是用“不存在满足条件P的x”来表示
用法1:查询表中“不”存在的数据
适用情况:找出表中不存在的项目
案例:找出各会议未参会的人员
知识点:先把所有可能性找出来,然后用not exists排除某条件,not exists 可以相当于except
用法2:全称量化
适用情况:找出表中所有不满足某条件的项
案例1:找出没有一个科目分数不满50分的学生
知识点:同样,先把所有可能性找出来,然后用not exists排除某条件,not exists 可以相当于except
案例2:找出所有数学在80分,语文在50分以上的学生
案例3:找出完成工序1的工程,后面的工程就算完成也不属于符合这类条件
方法1:groupby 分组后聚合,having筛选得到满足条件的工程
方法2:双重否定,not exists 是第一层否定,status<>限定条件构成第二重否定,双重否定表肯定,即是得到等于限定条件的数据
用法3:对列进行量化
适用情况:行可以增减,但列删减会有影响
案例1:查询”都是1“的行
知识点:any/all等比较谓词用法,比所有都大或小
案例2:查询”存在9“的行
知识点:用in表示或的关系,即存在1个及其以上相应值
案例3:查询”均为null“的行
知识点:由于null不是数值,要先coalesce所有列后再用is null限定条件