【发布时间】:2018-10-17 15:32:17
【问题描述】:
表 1
id class_id class
1
2
3
表2
sameid class_id
2 20
3 30
1 40
表3
class_id desc
30 forest
40 urban
20 water
我想通过加入 Table1-Table2-Table3 将 Table3.class_id 和 Table3.desc 插入到 Table1.class_id 和 Table1.class 中。
所以我试试:
INSERT INTO Table1 (class_id,class)
SELECT Table3.class_id, Table3.desc
FROM Table2
INNER JOIN Table3 ON Table2.class_id=Table3.class_id
WHERE Table1.id = Table2.sameid
但我收到错误:表“Table1”的引用 FROM 子句条目无效。我做错了什么?
【问题讨论】:
-
如果合适的话,你会考虑把 Table1 变成一个视图吗?
-
@AlexanderDeSousa 我想要它作为一张桌子。我不知道我是否可以制作一个视图然后另存为表格?我有很多表,如上面的 2,3,我想将值添加到多列的 Table1 中。我不知道最好的工作流程是什么,我是菜鸟。我想我会在答案中尝试许多 CTE。
-
没问题,如果你是新手,那就做适合你的。但是,请尝试在此过程中学习一些好的技术。听起来视图可能是您所需要的,一旦您创建了视图,您就可以像选择表格一样从中进行选择。您无需再次运行插入脚本,视图在运行您指定的查询时始终是最新的。
-
我同意亚历山大的观点。视图很可能是更好的解决方案。如果一些真正紧迫的性能问题迫使我这样做,我只会考虑这样的表。然后我可能会改用物化视图
标签: postgresql