我在Windows上使用PostgreSQL 9.1 .
我正在从机器自动收集数据到PostgreSQL数据库,这是正常的 . 数据保存在几个表中,我感兴趣的表称为 testrecord
. 我有一个名为 testcode
的第二个静态表和表之间的连接 . 我想在 testrecord
中选择一些传入数据并填充一个名为 finaldata
的新表,其中 parameter
与 testid
之间存在匹配(非空)(null) .
Question 1
这是 INSERT INTO
和 JOIN
最好的方法吗?
Question 2
目前所有的领域都是varchar . 当我在表 finaldata
中添加一个整数字段(例如自动递增串行)时,我收到 column "FdataID" is of type integer but expression is of type character varying
或 column "FdataID" is of type integer but expression is of type record
等消息
我的功能代码如下:
INSERT INTO finaldata
SELECT
"testrecord"."Record",
"testrecord"."Sample",
"testrecord"."SampleOrig",
"testrecord"."Parameter",
"testrecord"."Result",
"testrecord"."ResultOrig",
"testrecord"."Units",
"testrecord"."OperatorID",
"testrecord"."ObsTime",
"testrecord"."MsgTime",
"testcode"."Machine",
"testcode"."TestName",
"testcode"."ShortTestName",
"testcode"."TestID"
FROM testrecord
LEFT OUTER JOIN testcode
ON ("testrecord"."Parameter" = "testcode"."Parameter")
AND ("testrecord"."Machine" = "testcode"."Machine")
WHERE ("testcode"."TestID") IS NOT NULL;
1 回答
你写了:
第一件事是:
SELECT
将哪些列写入SELECT
产生的东西?你必须像这样指定它:关于错误类型的奇怪消息可能是由此引起的 .
第二件事是:
任何你暗示你想在函数内使用这个代码(我猜的触发函数) . 每次调用此语句都不会在
finaldata
中插入一个新行,它会插入所有内容 . 那么重复的条目就是某种东西 .所以:
修复
INSERT
部分修复
SELECT
部分中缺少的限定符 .哦,是的,问题一:只要
SELECT
查询产生正确的数据,就足以在_1015062中使用:-)如果JOIN
有助于产生正确的数据 - 那没关系 .