SQL 视图别名在 H2 SELECT 语句中不起作用

Posted

技术标签:

【中文标题】SQL 视图别名在 H2 SELECT 语句中不起作用【英文标题】:SQL View alias not working in H2 SELECT statement 【发布时间】:2020-01-05 14:34:18 【问题描述】:

我有一张桌子student 和一个视图annual_performance。我正在创建一个视图student_annual_performance,如下所示

CREATE OR REPLACE VIEW student_annual_performance AS SELECT
s, ap
FROM student s INNER JOIN annual_performance ap ON s.id = ap.studentId;

这在 PostgreSQL 中运行良好,但在 H2 内存数据库中出现以下错误

SQL 状态:42S22 错误代码:42122 消息:未找到列“ap”; SQL语句:

【问题讨论】:

【参考方案1】:

您使用了其他数据库中不存在的神秘 PostgreSQL 特定功能。在 H2 和大多数其他数据库中,您不能使用表(视图)名称或其别名作为值表达式。

您可以在两个数据库中改用… AS SELECT (s.column1, s.column2, …) s, (ap.column1, ap.column2, …) ap FROM …,其中column1column2 等是表student 和视图annual_performance 中的列名,以获得相同的结果。

您还可以使用… AS SELECT * FROM … 来获取单独列中的所有值。

【讨论】:

以上是关于SQL 视图别名在 H2 SELECT 语句中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

在 h2 数据库 sql 脚本中不起作用

Datetime BETWEEN 语句在 SQL Server 中不起作用

在SQL中的WHERE和HAVING语句中使用别名?

在连接条件中使用时语句在 oracle 中不起作用的情况

resultmap中select的查询不能用动态sql

视图序列索引