我有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
错误:缺少表“dim_table”
的FROM子句条目
答案 0 :(得分:2)
您缺少更新声明的部分内容:
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
答案 1 :(得分:1)
FROM
项目(由@Brandon发布)。SET
子句表中的列限定,无效(由@Rohit评论)。<>
和=
已切换为WHERE
条款。我还简化了表别名:
UPDATE fact_table f
SET item_key = d.item_key
FROM dim_table d
WHERE f.item_key <> d.old_key
AND f.item_key = d.item_key;
不要在目标规范中包含表格的名称 列 - 例如,
UPDATE tab SET tab.col = 1
无效。