sql - 根据其他表中的列更新表列

标签 sql postgresql sql-update

我有包含列的 dim_table:

item_key, client_id, date, notes, old_key 

还有一个fact_table:

user_key, trans_key, item_key, ref_number,date

我必须更新 fact_table,其中 item_key 不等于 dim_table.item_key
但是 dim_table.old_key 等于 fact_table.item_key 中的现有键。

我试过了,但是没用:

update fact_table
SET fact_table.item_key = dim_table.item_key
where
fact_table.item_key = dim_table.old_key
and fact_table.item_key <> dim_table.item_key

ERROR: missing FROM-clause entry for table "dim_table"

最佳答案

您缺少更新语句的 from 部分:

update fact_table
SET item_key = dim_table.item_key
FROM dim_table
where
fact_table.item_key = dim_table.old_key
and fact_table.item_key <> dim_table.item_key

关于sql - 根据其他表中的列更新表列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23807737/

相关文章:

PHP/MySQL SET var = var - var

sql - 如何实现条件Upsert存储过程?

Mysql 查询在 WHERE 中使用 SELECT

Django写入数据库,IntegrityError

regex - 从字符串字段中提取数字,包括小数 (Postgres 9.5)

sql - 如何列出特定日期范围内未保留的属性?

mysql - 从mysql获取满足条件的行数以及1次查询中的最大值

mysql - SQL查询根据特定条件对分组进行计数

MySQL 在 WHERE 子句中使用 LIKE 更新查询不影响匹配行

mysql - 选定行的 SQL 更新