【问题标题】:Problem in PostgreSQL (ERROR: relation "a" does not exist)PostgreSQL 中的问题(错误:关系“a”不存在)
【发布时间】:2021-09-21 03:32:14
【问题描述】:

SQL 查询 (PostgreSQL) 如下所示:

UPDATE a
SET "PropertyAddress" = COALESCE(a."PropertyAddress", b."PropertyAddress")
FROM "NashvilleHousingData" a
INNER JOIN "NashvilleHousingData" b
    ON a."ParcelID" = b."ParcelID"
    AND a."UniqueID" <> b."UniqueID"
WHERE a."PropertyAddress" IS NULL;

错误是relation "a" does not exist

我尝试了关于代码公共或方案中的概念的其他建议,但它仍然不起作用。请帮忙

【问题讨论】:

标签: sql postgresql


【解决方案1】:

这不是 Postgres 处理多个表的更新的方式。您不要在from 子句中重复该表:

UPDATE "NashvilleHousingData" nhd
    SET "PropertyAddress" = COALESCE(nhd."PropertyAddress", nhd2."PropertyAddress")
FROM "NashvilleHousingData" nhd2
WHERE nhd2."ParcelID" = nhd."ParcelID" AND
      nhd2."UniqueID" <> nhd."UniqueID"
WHERE nhd."PropertyAddress" IS NULL;

另外,COALESCE() 是多余的,因为已知值是 NULL

    SET "PropertyAddress" = nhd2."PropertyAddress"

【讨论】:

  • 感谢您的回答!但是我需要使用 JOIN 来将来自不同列的信息合并在一列中。就像在这个查询之前我做了SELECT a."ParcelID", a."PropertyAddress", b."ParcelID", b."PropertyAddress", COALESCE(b."PropertyAddress", a."PropertyAddress") FROM "NashvilleHousingData" a INNER JOIN "NashvilleHousingData" b ON a."ParcelID" = b."ParcelID" AND a."UniqueID" &lt;&gt; b."UniqueID" WHERE a."PropertyAddress" IS NULL; 和这个工作,但是下一个查询给了我错误
  • @eliz 。 . .您不需要明确的JOIN。这会做你想做的事情。 JOIN 正在发生,但使用 WHERE 子句。
  • 我认为你想要AND 而不是两个WHERE。 WHERE nhd2."ParcelID" = nhd."ParcelID" AND nhd2."UniqueID" nhd."UniqueID" WHERE nhd."PropertyAddress" 为空;
猜你喜欢
  • 1970-01-01
  • 2020-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多