0

如何从另一个表中的字段更新 2 列?

在字段DOMAINTABLE2我有这个字符串:

;*.mydomain.co.il;

我已经提取了mydomain.co.il. 现在我想:

  1. 更新字段URL inTABLE1
  2. 更新中的REDIRECT字段TABLE1

    UPDATE TABLE1
       set URL = (SELECT concat('http//', trim(both ';' from DOMAIN))
                   FROM TABLE2 
                  WHERE id = 99999
                 )
    
           REDIRECT = (SELECT concat('http//', 
                                     trim(both ';' from  REGEXP_REPLACE(domain,
                                                                       'mydomain',
                                                                       'otherdomain'
                                                                        )
                                          )
                                    )
                         FROM TABLE2 
                        WHERE id = 88888
    
                      )
    

错误消息:ORA-00933;SQL 命令未正确结束

好的。我更新了我的查询,现在我收到了这个错误:

[Oracle Data Provider for .NET] Number: 971
ErrorMessage: ORA-00971: missing SET keyword

为什么缺少 SET ?

UPDATE TABLE1 a, TABLE2 s
SET 
a.URL = concat('http//', trim(both ';' from s.DOMAIN), 
a.REDIRECT = concat('http//', trim(both ';' from  REGEXP_REPLACE(s.domain , 'mydomain', 'otherdomain'))
where s.id = 8888
4

2 回答 2

1

如果您在 id 上具有唯一键或主键,则可更新的连接视图会执行此操作。

http://docs.oracle.com/cd/B19306_01/server.102/b14231/views.htm#i1006232

或者,MERGE 可以基于连接更新多个列。

于 2012-12-26T23:02:10.997 回答
1

您忘记了,两个设置之间的 a :

UPDATE TABLE1
    SET URL = (SELECT CONCAT('http//', TRIM(BOTH ';' FROM DOMAIN))
            FROM TABLE2
            WHERE id = 99999),
        REDIRECT = ( SELECT CONCAT('http//', TRIM(BOTH ';' FROM REGEXP_REPLACE(domain , 'mydomain' , 'otherdomain')))
            FROM TABLE2
            WHERE id = 88888)
于 2012-12-26T21:58:15.857 回答