我想更新第三个表" temp_table1"通过对其他两个表执行一些操作" temp_table" "资源1"
temp_table:
+-----------+
| temp |
+-----------+
| 0.46574 |
+-----------+
资源1:
+------------------+
| evaluation_value |
+------------------+
| 0.23 |
| 0.56 |
| 0.76 |
| 0.25 |
| 0.79 |
+------------------+
temp_table1:
+-----------+
| temp |
+-----------+
| 0 |
+-----------+
现在,我想从" temp_table"中减去临时值。来自" resource1"的所有evaluation_value;并在" temp_table1"中保存小于0.25的减去值。我想更新" temp_table1"每次我运行查询。
我为此构建了以下查询,但我在某处出错:
update temp_table1 t1
set t1.temp = (
select (e.evaluation_value - t.temp) < 0.25
from resource1 e
Inner join temp_table t)
谢谢!!!
答案 0 :(得分:0)
每次运行查询时,都应清除现有值,然后填充新值:
TRUNCATE TABLE temp_table1
GO
INSERT INTO temp_table1
SELECT
e.evaluation_value - t.temp
FROM temp_table t
CROSS JOIN resource1 e
WHERE (e.evaluation_value - t.temp) < 0.25
那是因为UPDATE
只更改当前现有行中的数据,而这不是您的意图 - 您希望每次都获得新结果。此外,每次运行的行数可能会有所不同,因此UPDATE
不适合这里。
另一个问题是您选择的JOIN
类型:INNER
用于从一个表中的记录到另一个表的记录严格映射的情况(如两个表中都存在的ID)并且它要求您使用ON
关键字指定映射,而CROSS
只是将第一个表中的所有内容与另一个中的所有内容连接起来,就像您希望的那样(因此,不需要映射)。 / p>