单行子查询返回多个行错误。是我的脚本还是我的退货数据?

时间:2012-09-25 10:02:16

标签: sql oracle

我需要有关创建更新SQL脚本的帮助

表A

colA    colB    colC    colD    colE
  a       b       x       g       z 
  b       c       d       g       h 
  c       d       f       g       v  
  v       f       f       g       f
  d       a       q       o       a

表B

colA    colB    colC    colD    colE
  a       b       x       y       a 
  b       c       d       g       b 
  c       d       f       g       c  
  d       e       s       g       d
  v       f       f       g       e 

我需要TableB.colE更新到TableA.colE,其中TableB.colD = TableA.colD 结果应为

表A

colA    colB    colC    colD    colE
  a       b       x       g       b 
  b       c       d       g       c 
  c       d       f       g       d  
  v       f       f       g       e
  d       a       q       o       a

我尝试过使用

UPDATE TABLEA SET(TABLEA.COLE=TABLEB.COLE) WHERE TABLEA.COLD =  TABLEB.COLD

它不起作用。

3 个答案:

答案 0 :(得分:1)

尝试此更新:

UPDATE TableA a
   SET COLE = ( SELECT COLE
                FROM TableB b
                WHERE b.COLD = a.COLD );

答案 1 :(得分:0)

UPDATE TABLEA SET TABLEA.COLE=TABLEB.COLE from TABLEB WHERE TABLEA.COLD = TABLEB.COLD

您错过了在from子句中指定第二个表名TABLEB。试试这个。

答案 2 :(得分:0)

您需要在更新的第一个子句中指定表连接

UPDATE
(
  SELECT tablea.cole, tableb.cole as newvalue
    FROM tablea
    JOIN tableb
      ON tablea.cold = tableb.cold
)
SET cole = newvalue