sql语句中的exists

select * from tt t where not exists(select 1 from tt where 姓名=t.姓名 and 薪资>t.薪资 ) 

对于表tt的记录进行扫描,
对于其中任一条记录,查询相同表中相同姓名的记录,查找其中是否存在薪资>当前记录的薪资的记录,如存在,扫描到的记录即不符合条件,
如不存在,即扫描到的记录符合where的条件,将作为查询结果.
考虑最简单的情况
姓名,薪资
chen,1000 --此记录与全部chen记录1000-4000比较,2000以上>1000存在查询结果,此记录不符合where 条件
chen,2000 --此记录与全部chen记录1000-4000比较,3000以上>2000存在查询结果,此记录不符合where 条件
chen,3000 --此记录与全部chen记录1000-4000比较,4000>3000存在查询结果,此记录不符合where 条件
chen,4000 --此记录与全部chen记录1000-4000比较,没有>4000的记录,此记录符合where 条件 
最后符合条件的记录为
chen,4000
条件就是查询相同姓名 没有比查询的记录的薪资高的记录
实际结果就是薪资的最大值.

转载于:https://www.cnblogs.com/chinaqzh/archive/2012/07/23/2604866.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值