Redrock Postgres 文档
主页 切换暗/亮/自动模式 切换暗/亮/自动模式 切换暗/亮/自动模式 返回首页

42601 语法错误

错误: FROM 中的子查询必须具有别名

您可能会遇到如下所示的错误消息。

ERROR: subquery in FROM must have an alias at character 15
HINT: For example, FROM (SELECT ...) [AS] foo.
STATEMENT: SELECT * FROM (SELECT 1)

此日志事件与语法错误密切相关,但这是许多人遇到的一个明显问题,您可能并不清楚需要以这种方式编写查询。

例如,以下查询将产生此错误:

SELECT * FROM
  (SELECT uid, COUNT(*) AS count
     FROM my_table
     GROUP BY 1
     ORDER BY 2)
  LIMIT 1;

正确的解决方法是为 FROM 子句中的子查询指定别名(即名称),以便可以在查询中唯一标识它。即使您不打算在任何地方引用该名称,也必须这样做,如下所示:

SELECT * FROM
  (SELECT uid, COUNT(*) AS count
     FROM my_table
     GROUP BY 1
     ORDER BY 2) AS x
  LIMIT 1;

此错误通常发生在开发或测试环境中,因为像这样编写的查询在运行时总是会出错,与传入的查询计划或值无关。

解决方案:

将所选别名添加到应用程序生成的 SQL 中的子查询中。