日期:2014-05-17  浏览次数:20879 次

用not exists 取最大值为什么没用
select * from (select * from 
UT_MEMBERORGRELA t where not exists 
  (select 1 from UT_MEMBERORGRELA t1 where t1.Pkid=t.pkid and TRUNC(t1.Enterdate)>TRUNC(t.Enterdate)))
   
  where mpkid='RTCS000000000109364'
一对三的结果,这样查询还是三条,为什么??

------解决方案--------------------
因为你里面的子查询的exists中筛选的是pkid相同的时间最大值啊,如果你的一个mpkid中有3个不同的pkid当然出来的就是三条,每条都是那个pkid最大的。如果你筛选mpkid最大的,就把子查询中的
SQL code
where t1.Pkid=t.pkid