select roleId2,rolename2,
checked=case when exists (select 1 from role1_role_table2 b,roletable1 c where b.roleId1=c.roleId1 and b.roleId2=a.roleId2) then 1 else 0 end   
from roleTable2 a

解决方案 »

  1.   

    少个条件:select roleId2,rolename2,
    checked=case when exists (select 1 from role1_role_table2 b,roletable1 c where b.roleId1=c.roleId1 and b.roleId2=a.roleId2 and c.rolename1='张三') then 1 else 0 end   
    from roleTable2 a
      

  2.   

    select roleId2,rolename2,checked=1
    from roleTable2 a
    where exists (select 1 from role1_role_table2 b,roletable1 c where b.roleId1=c.roleId1 and b.roleId2=a.roleId2 and c.rolename1='张三')
    union
    select roleId2,rolename2,checked=0
    from roleTable2 a
    where not exists (select 1 from role1_role_table2 b,roletable1 c where b.roleId1=c.roleId1 and b.roleId2=a.roleId2 and c.rolename1='张三')