not exists在这个语句中怎么理解?
我简化了一下表名之类的,让语句看起来小一些,这是“每个Y中最新的X”
select * from ZT Z where (not exists(select * from ZT Z2 where(Z2.y = Z.y) and (Z2.x>Z.x)))
我在网上查了not exists的意思,但是理解起来不对啊,子查询select * from ZT Z2 where(Z2.y = Z.y) and (Z2.x>Z.x)这句话是把最小的去掉吧?加上ZT z试了试,也确实是这个意思。再加上not exists,岂不是求最小的?结果最大的出来了。。。百思不得其解啊~~~
------解决方案--------------------为什么用not exists.
exists只要有一条满足条件就返回真值。。。not exists一样。。。
根据这个判断大小应该不成立吧
------解决方案--------------------
需要注意的是你这个语句是一个整体,你求的Z里值(不是Z2),z2在这里只是起一个连接作用。
select * from ZT Z2 where(Z2.y = Z.y) and (Z2.x>Z.x)这里其实也是求Z的值,如果是求Z的值,那么剩下的就是最小的,加上NOT exists 就是最大值