有两个表 A(DBH,DZ), B(DBH,DZ),关键字都是DBH, 想把B表的DZ字段修改为A.DZ||B.DZSQL2000里面可以用以下语句实现:update B
set B.DZ=B.DZ||A.DZ
from A,B
where A.DBH=B.DBH在下用的是Oracle8.05用以上语句实现不了,提示“ORA-00933:SQL命令未正确结束”
 
上次发贴有人说用UPDATE B
SET DZ=DZ||(SELECT A.DZ 
from A 
where A.DBH=B.DBH);又提示“ORA-00936:缺少表达式”谁能给个正确答案??????

解决方案 »

  1.   


    这上面的update语句是正确的,我已经在sqlplus下测试过。为什么你的就出问题了?!
      

  2.   


    SQL> create table a(dbh varchar2(10),dz varchar2(10));
     
    Table created
     
    SQL>  insert into a values('a','bbbb');
     
    1 row inserted
     
    SQL>  create table b(dbh varchar2(10),dz varchar2(10));
     
    Table created
     
    SQL> insert into b values('a','cccc');
     
    1 row inserted
     
    SQL> select * from a;
     
    DBH        DZ
    ---------- ----------
    a          bbbb
     
    SQL> select * from b;
     
    DBH        DZ
    ---------- ----------
    a          cccc
     
    SQL> 
    SQL>  UPDATE B
      2   SET DZ=DZ||(SELECT A.DZ
      3   from A
      4   where A.DBH=B.DBH);
     
    1 row updated
     
    SQL> select * from b;
     
    DBH        DZ
    ---------- ----------
    a          ccccbbbb
     
      

  3.   


    是的哟UPDATE B 
    SET DZ=DZ||(SELECT A.DZ 
    from A 
    where A.DBH=B.DBH); 确实是正确的哟,你只怎样执行的呀,怎么会有这样的错。
      

  4.   


    这是我的执行结果SQL> UPDATE B
      2  SET DZ=DZ||(SELECT A.DZ
      3  from A
      4  where A.DBH=B.DBH);
    SET DZ=DZ||(SELECT A.DZ
                *
    错误位于第2行:
    ORA-00936: 缺少表达式
      

  5.   


    在oracle SQL worksheet和在PLSQL Developer运行都有一样的错误如下~~~~~~~~~~~~~~~~`SQLWKS> UPDATE B 
         2> SET DZ=DZ||(SELECT A.DZ 
         3> from A 
         4> where A.DBH=B.DBH); 
    SET DZ=DZ||(SELECT A.DZ 
                *
    ORA-00936: 缺少表达式
      

  6.   

    从语句上看,是没有错误的
    可能的原因是 当前用户是否有update的权限?
      

  7.   

    UPDATE B 
    SET DZ=DZ||(SELECT A.DZ 
    from A 
    where A.DBH=B.DBH); 这种个SQL语句本身就已经存在问题了如果里面那个子查询返回多条查询结果肯定是会报错!
      

  8.   

    UPDATE B 
    SET DZ=DZ||(SELECT A.DZ 
    from A 
    where A.DBH=B.DBH); 这个SQL语句麻烦那些只建了一条数据的同道们再多建几条数据试试就会发现它是一个错误的SQL语句了
      

  9.   

    update B 
    set B.DZ=B.DZ||A.DZ 
    from A,B 
    where A.DBH=B.DBH 
    楼主的这个SQL有问题噢!UPDATE可以用FROM吗?
      

  10.   

    SQL> create table a(dbh varchar2(10),dz varchar2(10));
     
    Table created
     
    SQL>  insert into a values('a','bbbb');
     
    1 row inserted
     
    SQL>  create table b(dbh varchar2(10),dz varchar2(10));
     
    Table created
     
    SQL> insert into b values('a','cccc');
     
    1 row inserted
     
    SQL> select * from a;
     
    DBH        DZ
    ---------- ----------
    a          bbbb
     
    SQL> select * from b;
     
    DBH        DZ
    ---------- ----------
    a          cccc
     
    SQL> 
    SQL>  UPDATE B
      2   SET DZ=DZ||(SELECT A.DZ
      3   from A
      4   where A.DBH=B.DBH);
     
    1 row updated
     
    SQL> select * from b;
     
    DBH        DZ
    ---------- ----------
    a          ccccbbbb
      

  11.   

    UPDATE (SELECT *
              FROM a,
                   b
             WHERE a.DBH = B.DBH)
       SET B.DZ = B.DZ ||A.DZ
    楼主可以试试这个SQL语句,注意a,b两表须是一对一的,如果是一对多就比如说父表与子表之间的关系那么你只能对子表进行更改不能对父表进行更改因为子表会返回多条与父表对应的数据行