PostgreSQL更新无法正常工作

时间:2018-08-17 15:52:28

标签: sql postgresql view sql-update

凭借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的第一行中的数据。

我为尴尬做好了准备-请就我做错了事向我启发...

1 个答案:

答案 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子句中重复该表-这是对该表的新引用。