select 。。from where 。and not exists (select 1 from T_PROGRAMFLAG p where p.businessid = t.id and p.flag='1'and 
           (p.updateddate=t.updateddate or t.updateddate is null) and p.tablename = 'INF_PUNISH_PROCESS')如上所示是一个sql查询语句,问题是and not exist 和它之后的语句是什么意思?里面的逻辑有点复杂,诸位说仔细点啊

解决方案 »

  1.   

    意思就是说:把通过select 。。from where 。
    选出来的记录,再过滤一遍。
    这次过滤,需要
    把在这个表T_PROGRAMFLAG 中存在的记录去掉,
    把在这个表T_PROGRAMFLAG 中不存在的记录保留下来。
      

  2.   

    p.tablename = 'INF_PUNISH_PROCESS'
    这句话什么意思?
      

  3.   

    not exists后边是删除过滤掉重复的记录,并且增加约束的条件p.tablename = 'INF_PUNISH_PROCESS'
    p.updateddate=t.updateddate or t.updateddate is null。