凭借20多年的MS Access和SQL Server经验,我不是SQL的新手,但是我是PostgreSQL的新手,我遇到了一个让我感觉像个菜鸟的问题。我有一个简单的UPDATE查询,其中我想用源视图m中的数据更新目标表d:
UPDATE chgman.tc_data
SET reporttime = m.reporttime, endtime = m.endtime,
itismessage = m.itismessage, shortdesc = m.shortdesc,
longdesc = m.longdesc, severity = m.severity,
tc_source = m.tc_source, tc_state = m.tc_state,
ushr_state = m.ushr_state, mainroad = m.mainroad,
start_location = m.start_location, end_location = m.end_location
FROM
chgman.tc_matched_raw AS m
INNER JOIN
chgman.tc_data AS d ON d.tc_id = m.tc_id;
查询的结果是表d中的每一行都填充了视图m的第一行中的数据。
我为尴尬做好了准备-请就我做错了事向我启发...
答案 0 :(得分:1)
Postgres中的from
/ update
与SQL Server / MS Access有点不同。
这应该做您想要的:
UPDATE chgman.tc_data d
SET reporttime = m.reporttime, . . .
FROM chgman.tc_matched_raw m
WHERE d.tc_id = m.tc_id;
您不会在FROM
子句中重复该表-这是对该表的新引用。