如何在 SELECT 子句的子查询中使用别名? PostgreSQL
How to use an alias in a subquery in the SELECT clause ? postgreSQL
首先,感谢您的宝贵时间!
我已将我的数据库从 MariaDB 迁移到 PostgreSQL,现在我的一些查询不再有效。
这是一个例子:
SELECT DISTINCT table.column AS columnAlias,
SUM(table2.column)/(SELECT COUNT(table.column)
FROM table
WHERE table.column= columnAlias)
FROM ...
问题是当我的数据库是 MariaDB 数据库时,这个 SQL 查询运行良好,但实际上,我不得不将它迁移到 PostgreSQL 数据库,现在它抛出一个
ERROR: 42703: column "columnAlias" does not exists
.
我认为问题在于 PostgreSQL 不接受子查询中的别名,但是您知道如何解决这个问题吗?或其他完成工作的方法?
感谢您的宝贵时间,
纪尧姆。
您可以使用横向连接:
SELECT DISTINCT v.columnAlias,
SUM(table2.column) / (SELECT COUNT(table.column)
FROM table WHERE table.column= v.columnAlias)
FROM ... CROSS JOIN LATERAL
(VALUES (table.column)) v(columnAlias)
首先,感谢您的宝贵时间!
我已将我的数据库从 MariaDB 迁移到 PostgreSQL,现在我的一些查询不再有效。
这是一个例子:
SELECT DISTINCT table.column AS columnAlias,
SUM(table2.column)/(SELECT COUNT(table.column)
FROM table
WHERE table.column= columnAlias)
FROM ...
问题是当我的数据库是 MariaDB 数据库时,这个 SQL 查询运行良好,但实际上,我不得不将它迁移到 PostgreSQL 数据库,现在它抛出一个
ERROR: 42703: column "columnAlias" does not exists
.
我认为问题在于 PostgreSQL 不接受子查询中的别名,但是您知道如何解决这个问题吗?或其他完成工作的方法?
感谢您的宝贵时间,
纪尧姆。
您可以使用横向连接:
SELECT DISTINCT v.columnAlias,
SUM(table2.column) / (SELECT COUNT(table.column)
FROM table WHERE table.column= v.columnAlias)
FROM ... CROSS JOIN LATERAL
(VALUES (table.column)) v(columnAlias)