我要做报表,A表有2个字段:dept_code,costs ,B表有2个字段 :dept_code ,class_name
B 表中 dept_code 有重复,但是我主要需要 B表中的 class_name.两个表连接时,如果
B表中有多个dept_code 相同,我只取其中一个与A表连接,这样总的 Costs 不会改变,
否则,连接后的记录数可能加倍,sql语句可以完成这样的需求嘛?
另外,如果A表中有 字段dept_code,dept_name,只有dept_code有值,dept_name是空,
我想用另一个词典表:B,有字段 deptcode,deptname,来更新A表中的dept_name,在sql server
中是可以的,在oracle中好像不可以.在sqlsever中的语句是:         update A set dept_name=B.deptname from A,B
         where A.dept_code=B.deptcoe.这样的语句在oracle中不能通过.请问 oracle 中有类似的语句嘛?

解决方案 »

  1.   

    update a set dept_name = (select b.deptname from b where b.dept_code=a.dept_code)
      

  2.   

    update a set dept_name = (select b.deptname from b where b.dept_code=a.dept_code) 
    where exists (select 1 from b where b.dept_code=a.dept_code )
    如不加where条件a表中有,b表中没有,则a表dept_name 被修改为空
      

  3.   

    呵呵呵,这个 update 在 ORACLE 下是不行的!而且没有对应的语句。
    update a set dept_name = (select b.deptname from b where b.dept_code=a.dept_code)
    是不行的,除非select 出来的b.deptname 值只有一条。为这个问题,我不见了不少的头发。