Sql ORACLE-使用筛选器从不同表中的两个不同列更新值
我有一个小问题要问。 我必须从一个只有费用记录(整数)的表中更新一列。 我必须增加5%的费用,如果客户端来自特定的状态,该状态的列位于不同的表中,并且共同的键是地址 以下是我的问题:Sql ORACLE-使用筛选器从不同表中的两个不同列更新值,sql,oracle,Sql,Oracle,我有一个小问题要问。 我必须从一个只有费用记录(整数)的表中更新一列。 我必须增加5%的费用,如果客户端来自特定的状态,该状态的列位于不同的表中,并且共同的键是地址 以下是我的问题: UPDATE table 1 a SET expense_vl = ( SELECT expense*1.05 FROM table 1 LEFT JOIN table2 b ON b.ADDRESS_ID=a.ADDRESS_ID WHERE description_state IN 'lollyland' )
UPDATE table 1 a
SET expense_vl = (
SELECT expense*1.05 FROM table 1
LEFT JOIN table2 b ON b.ADDRESS_ID=a.ADDRESS_ID
WHERE description_state IN 'lollyland'
)
试试下面
UPDATE table1 a SET expense_vl = (SELECT expense*1.05
FROM table2 b
WHERE b.ADDRESS_ID=a.ADDRESS_ID)
WHERE description_state IN 'lollyland'
或者尝试使用subselect:
UPDATE table1
SET expense_vl = expense*1.05
WHERE ADDRESS_ID IN (SELECT ADDRESS_ID FROM table2 WHERE description_state IN 'lollyland')
我认为您需要更改您的查询,如下所示:
UPDATE table 1 A
SET expense_vl=expense*1.05 FROM table 1
LEFT JOIN table2 B ON B.ADDRESS_ID=A.ADDRESS_ID
WHERE B.description_state IN 'lollyland'
我建议使用半联接:
update table_1 a
set expense_v1 = expense * 1.05
where exists (
select null
from table2 b
where
a.address_id = b.address_id and
b.description_state = 'lollyland'
)
尽管我必须补充一点,如果您在表中包含DDL,这将有所帮助。我们在猜测“描述”来自哪个表
此外,如果可能,还应包括每个表的样本输入和所需输出。我们不需要一百万条记录,只需要一个例子来说明你的问题