ORACLE-使用过滤器更新差异表中两个不同列的值

时间:2018-10-10 13:10:39

标签: 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'
)

4 个答案:

答案 0 :(得分:0)

尝试以下

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'

答案 1 :(得分:0)

或尝试进行子选择:

UPDATE table1
   SET expense_vl =  expense*1.05
 WHERE ADDRESS_ID IN (SELECT ADDRESS_ID FROM table2 WHERE description_state IN 'lollyland')

答案 2 :(得分:0)

我认为您需要像下面这样更改查询:

 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'

答案 3 :(得分:0)

我建议使用半联接:

 RewriteCond %{HTTP_HOST} ^www\.kita-neukoelln.tandembtl\.de$ [NC]
 RewriteRule (.*) https://kita-neukoelln.tandembtl.de/$1 [R=301,L]

我必须补充一点,如果您为表包含DDL,这将有所帮助。我们有点猜测“说明”来自哪个表。

如果可能,还包括每个表的样本输入和所需的输出。我们不需要一百万条记录,只需一个示例即可说明您的问题。