select id from A  where name in(a,b);
如果a 或者b中有一个是查不到对应的id的 所以 这个语句只会返回一个 id 但是我现在的目的是仍然想得到2个id
怎样得到那条没有查到的id呢 ?怎样让他可以默认值为0  或空呢?换个问法就是我有几个name 我就需要得到几个与之对应的id  哪管name查找不到对应的id  谢谢!

解决方案 »

  1.   


    select * from a;
    --decode函数判断,如果ID不为空则返回ID原值,否则返回-999
    select decode(id, null, -999, id)
      from a,
           (select 'a' as name
              from dual
            union all
            select 'b' as name from dual) t
     where a.name(+) = t.name;
      

  2.   


    select decode(id,null,-999,id)from a,(select '山东' as name from dual union all select '山东烟台' as name from dual) t where a.name(+) = t.name;
    为什么会提示Id 标示符无效呢?
      

  3.   


    select decode(id,null,-999,id)from a,(select '山东' as name from dual union all select '山东烟台' as name from dual) t where a.name(+) = t.name;
    为什么会提示Id 标示符无效呢?
    我忘改表名 了 谢谢你了!