我有两张看起来像这样的表
TABLE_1
option_id PK,
condition_id FK,
我有另一张看起来像这样的表
TABLE_2
option_id PK, FK -> TABLE_1
condition_id PK, FK
我想在TABLE_1中设置condition_id
,其中包含来自TABLE_2的condition_id
的相应值。
我的脚本看起来像这样
UPDATE TABLE_1
SET
condition_id = t2.condition_id
FROM TABLE_1 t1
INNER JOIN TABLE_2 t2
ON t1.option_id = t2.option_id
但似乎错了 - 执行后condition_id
中TABLE_1
的所有值都相同。
有什么问题?
答案 0 :(得分:1)
问题是:您使用的是TABLE_1
的两个实例。
UPDATE TABLE_1 <-- first instance
FROM TABLE_1 t1 <-- second instance
因此,虽然FROM
允许您引用与匹配条目相关的组合结构,但这与正在更新的TABLE_1
实例形成完全交叉连接。为避免这种情况,您需要添加其他条件,例如WHERE TU.option_id=t1.option_id
。 (我将TU
作为更新目标表的别名,以避免歧义。)
或者,您可能只是使用:
UPDATE TABLE_1 t1
SET
condition_id = t2.condition_id
FROM TABLE_2 t2
WHEREt1.option_id = t2.option_id
答案 1 :(得分:0)
这样的事情应该这样做:
UPDATE table1
SET table1.condition_id= table2.condition_id
FROM table1 INNER JOIN table2 ON table1.option_id = table2.option_id