【问题标题】:PostgreSQL: Error: column of relation does not existPostgreSQL:错误:关系列不存在
【发布时间】:2014-07-25 02:22:08
【问题描述】:
UPDATE master as m
SET m.husband = p.id
From per as p
where m.drid = p.drid AND p.address > 80000 AND p.address <= 154969

我有一个名为per 的表,其中有一个名为id 的列。基本上,我想在where 子句上的另一个名为master 的表中复制这些ID。

但是我收到一条错误消息,说关系“master”的列“m”不存在。 m 不是一列。我不确定我哪里出错了?

【问题讨论】:

  • 是 MySQL 还是 Postgresql?
  • 该错误与子句“as m”有关。在这种情况下这是不可能的。此外,很难理解您真正想要完成的内容。试试这个:UPDATE master SET husband = (SELECT id FROM per WHERE master.drid = per.drid AND per.address &gt; 80000 AND per.address &lt;= 154969);
  • Jan Trienes,我正在尝试更新表中的列 ID,与表主的列丈夫相同,条件是两个表中的 drids 相同。顺便说一句..你的建议就像我想要的那样。谢谢
  • @JanTrienes:您绝对可以在UPDATE 中为表起别名。您不允许做的是在 SET 子句中限定目标字段名称。

标签: sql database postgresql


【解决方案1】:

尝试如下所示;从SET 操作中删除表别名m 并使其成为SET husband = p.id

UPDATE master m
SET husband = p.id
From per p
where m.drid = p.drid 
AND p.address > 80000 
AND p.address <= 154969

(OR) 完全不使用表别名

UPDATE master 
SET husband = per.id
From per
where master.drid = per.drid 
AND per.address > 80000 
AND per.address <= 154969

Postgres Documentation For More

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多