在你的查询条件里
SELECT * FROM add_final,planadmin where charindex(add_final.F27,'、'+planadmin.retwo+'、')>0 and  add_final.pro_name = '方里镇野狐咀供水工程' 
恒成立,所以结果当然是1

解决方案 »

  1.   

    select add_final.*,case when (EXISTS(SELECT * FROM add_final,planadmin where charindex(add_final.F27,'、'+planadmin.retwo+'、')>0 and  add_final.pro_name = '方里镇野狐咀供水工程' )) 
    then 1 else 0 end as keyid from add_final where add_final.pro_name = '方里镇野狐咀供水工程' 
    这样的情况请下这句是有问题的。SELECT * 时会有以外数据,你可以改为add_final.F27,具体可以看下外连接,聚合的相关知识
      

  2.   

    第二个语句查处的结果没有方里镇野狐咀供水工程 方里镇野狐咀村 174 D130503    ,理论上应该在第三条语句中显示:
    方里镇野狐咀供水工程 方里镇野狐咀村 174 D130503  0
    但是为何显示了: 
    方里镇野狐咀供水工程 方里镇野狐咀村 174 D130503    1 
      

  3.   

    exist 子句中 add_final 表 没有与主句中的add_final 表 发生关系,(应该是两者F27相等吧)导致exist条件恒成立;
    没必要用exist 用left join 更合理,判断时retwo is null 即为不存在 得值为1
      

  4.   

    select add_final.*,case when (EXISTS(SELECT * FROM add_final,planadmin where 加a.F27=F27 and charindex(add_final.F27,'、'+planadmin.retwo+'、')>0 and  add_final.pro_name = '方里镇野狐咀供水工程' )) 
    then 1 else 0 end as keyid from add_final 加a where add_final.pro_name = '方里镇野狐咀供水工程' select a.*,case when (b.retwo is null then 0 else 1 end) as keyid 
    from add_final a 
    left join planadmin b on charindex(add_final.F27,'、'+planadmin.retwo+'、')>0
    where a.pro_name = '方里镇野狐咀供水工程' 
      

  5.   

    --sorry语法有错
    select a.*,case when b.retwo is null then 0 else 1 end as keyid 
    from add_final a 
    left join planadmin b on charindex(add_final.F27,'、'+planadmin.retwo+'、')>0 
    where a.pro_name = '方里镇野狐咀供水工程' 
      

  6.   

    晕了,left join 得不到你要的结果