sql - PostgreSQL 更新未按预期工作
问题描述
凭借 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 的第一行的数据。
我已经为尴尬做好了准备 - 请告诉我我做错了什么......
解决方案
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
子句中重复该表——这是对该表的新引用。
推荐阅读
- stylecop - .net Core 2.0 中 Stylecop 的自定义规则
- python - 袖扣的坐标轴问题
- html - 移动设备中的引导导航栏丢失格式
- python - 我可以使用 pandas 分类变量作为 statsmodels 公式的左侧吗?
- regex - 如何在 Angular 4 打字稿上导入 RegExp
- powershell - 添加到数组中的一个元素会导致添加到所有元素
- wordpress - 将 URL 从子文件夹重定向到根目录
- javascript - 换算重量,数值不显示
- sql - 'End' 附近的语法不正确,不允许运行查询或创建过程
- python - 压缩python库邮政编码