【问题标题】:PSQL - UPDATE tableA off tableB where Column1 MatchPSQL - 更新 Column1 匹配表的表
【发布时间】:2021-04-26 08:36:52
【问题描述】:

我有一个包含空值的损坏列,但是我设法将数据从 csv 导入到 TempTable 中

MediaRecords - localpath 列为空

TempTable - localpath 列正确

更新媒体记录 SET localpath = TempTable.localpath 从临时表 WHERE recordid = TempTable.recordid;

我不断收到错误消息:关系“temptable”不存在 第 3 行:来自临时表 但是我可以浏览表格并查看数据。
我试过关注这个How to update selected rows with values from a CSV file in Postgres?,我们到了

【问题讨论】:

  • 你能做一个 select * from temptable 吗?另外,为两个表或屏幕截图发布一些示例创建表语法

标签: postgresql


【解决方案1】:

Hu Bucky,您能否检查一下该表的实际调用方式,因为我看到您将其称为 TempTable,带有驼峰式,错误状态为 temptable 全部小写。

PostgreSQL 可能区分大小写。例如,如果您执行以下操作

create table "TempTableABC" (id int);

尝试从temptableABC 中选择会失败

defaultdb=> select * from temptableABC;
ERROR:  relation "temptableabc" does not exist
LINE 1: select * from temptableABC;
                      ^

您需要使用相同的引用语法才能使其工作

defaultdb=> select * from "TempTableABC";
 id 
----
(0 rows)

【讨论】:

  • 嘿,所以 SELECT * FROM public."TempTable";但是可以 UPDATE mediarecords SET localpath = TempTable.localpath FROM public."TempTable" WHERE recordid = TempTable.recordid;没有
  • OK 酷,你设置我在正确的路径 UPDATE mediarecords SET localpath = "TempTable".localpath FROM public."TempTable" WHERE "mediarecords".recordid = "TempTable".recordid;作品
【解决方案2】:

更新媒体记录 SET localpath = "TempTable".localpath
FROM public."TempTable"
WHERE "mediarecords".recordid = "TempTable".recordid;

工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    • 2014-12-24
    • 1970-01-01
    • 1970-01-01
    • 2020-09-15
    相关资源
    最近更新 更多