sql - 从2 select语句中更新2列

时间:2012-12-26 21:50:09

标签: sql select oracle10g sql-update

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

DOMAIN的{​​{1}}字段中,我有这个字符串:

TABLE2

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

  1. 更新mydomain.co.il
  2. 中的字段UR L.
  3. 更新TABLE1

    中的字段REDIRECT
    TABLE1
  4. ErrorMessage:ORA-00933; SQL命令未正确结束

    确定。我更新了我的查询,现在我收到此错误:

    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
    
                      )
    

    为什么缺少SET?

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

2 个答案:

答案 0 :(得分:1)

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

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)

答案 1 :(得分:1)

如果您在id上有唯一或主键,则可以使用可更新的联接视图。

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

或者,MERGE可以根据连接更新多个列。