相关更新

时间:2012-11-21 15:44:14

标签: sql oracle10g

我尝试使用另一个表中的字段更新一个表:

Update x
From y
Set 1=y.1, 2=y.2, 3=y.3
Where y.4="*Cash*" and y.5="*Use*"

这可能吗?或者我必须使用内部联接或子查询?我的更新语法中一直出现错误:"缺少选项或无效选项。"

1 个答案:

答案 0 :(得分:2)

你似乎要求像

这样的东西
UPDATE x
   SET (col1, col2, col3) = (select y.col1, y.col2, y.col3
                               from y
                              where y.col4 = '*Cash*'
                                and y.col5 = '*Use*')

通常,会有一些与表xy相关的附加条件。如果针对y的查询返回单行,并且您希望使用该单行数据更新x的每一行,则无需这样做。但通常情况下,你会有像

这样的东西
UPDATE x
   SET (col1, col2, col3) = (select y.col1, y.col2, y.col3
                               from y
                              where y.col4 = '*Cash*'
                                and y.col5 = '*Use*'
                                and x.someKey = y.someKey)

如果您只想更新xy

中匹配行的UPDATE x SET (col1, col2, col3) = (select y.col1, y.col2, y.col3 from y where y.col4 = '*Cash*' and y.col5 = '*Use*' and x.someKey = y.someKey) WHERE EXISTS( select 1 from y where y.col4 = '*Cash*' and y.col5 = '*Use*' and x.someKey = y.someKey)
{{1}}