0

別のテーブルのフィールドから 2 つの列を更新するにはどうすればよいですか?

のフィールドDOMAINTABLE2は、次の文字列があります。

;*.mydomain.co.il;

を抽出しましたmydomain.co.il。今私はしたい:

  1. URフィールドL を更新しますTABLE1
  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

,両方の設定を忘れました:

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 に答える
1

IDに一意または主キーがある場合、更新可能な結合ビューがそれを行います。

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

または、結合に基づいて MERGE で複数の列を更新できます。

于 2012-12-26T23:02:10.997 に答える