gpt4 book ai didi

mysql - 通过连接两个表来更新第三个表

转载 作者:行者123 更新时间:2023-11-29 21:07:03 26 4
gpt4 key购买 nike

我想通过对其他两个表“temp_table”“resource1”执行一些操作来更新第三个表“temp_table1”。

临时表:

+-----------+
| temp |
+-----------+
| 0.46574 |
+-----------+

资源1:

+------------------+
| evaluation_value |
+------------------+
| 0.23 |
| 0.56 |
| 0.76 |
| 0.25 |
| 0.79 |
+------------------+

临时表1:

+-----------+
| temp |
+-----------+
| 0 |
+-----------+

现在,我想用“resource1”中的所有评估值从“temp_table”中减去临时值,并将减去的值保存在“temp_table1”中,并且我想在每次运行时更新“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)

谢谢!!!

最佳答案

每次运行查询时,都应该清除现有值,然后填充新值:

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 只是将第一个表中的所有内容与另一个表中的所有内容连接起来,就像您希望的那样执行(因此不需要映射)。

关于mysql - 通过连接两个表来更新第三个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36722635/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com