【发布时间】:2019-09-13 07:55:30
【问题描述】:
我有一个脚本,我在 postgres db 中成功运行,但是在 hsqldb 中运行时失败。 有人可以帮我更改此 sql 以使其适用于 HSQLDB 和 Postgres DB 吗? 以下是我的脚本:
UPDATE tableA af
SET columnA2 = b.columnB2
from
( select columnB1, columnB2 from.....) as b
Where af.columnA1 = b.columnB1;
当我在 hsqldb 中运行它时会引发以下异常:
原因:java.sql.SQLSyntaxErrorException:用户缺少权限或 找不到对象:b.columnB2 原因:org.hsqldb.HsqlException:用户 缺少权限或找不到对象:b.columnB2
谢谢。
更新: 我创建了另一个视图以使我的问题更清楚。
table_A 有 2 列:company_code、company_number view_B 有 2 列:company_code、company_number_correct_answer
table_A 有 10000 行,而 view_B 只有 2 行。 我想要更新 table_A 中的 2 条记录,company_code 存在于 view_B 中并设置 table_A.company_number = view_B.company_number_correct_answer
【问题讨论】:
-
请发布整个查询。请注意,HSQLDB 和 Postgres 使用截然不同的语法。
-
不相关,但是:
from (select ... from b) as b对于 Postgres 可以简化为from b -
@TimBiegeleisen:由于私人内部信息,我无法上传整个查询。但是问题是:HSQLDB 不理解别名。
-
你应该使用 HQL 或 JPA,这与数据库无关。
-
@TimBiegeleisen:我的系统使用liquibase脚本更新数据到表,测试环境使用hsqldb。运行 liquibase 时,SpringBoot 应用程序构建失败。这就是为什么我说我需要为 hsqldb 和 postgres 修复那个简单的查询。
标签: java sql postgresql hsqldb liquibase