【发布时间】:2019-03-13 04:51:42
【问题描述】:
我想知道是否可以在嵌套查询中保留表名以避免Duplicate column name 错误。
作为一个最小的例子,我有以下表格:
- 客户:ID、姓名、CITY_ID
- 城市:ID、姓名、邮编
以下查询失败,错误为Duplicate column name "NAME":
SELECT COUNT(*) FROM (
SELECT CUSTOMERS.NAME, CITY.NAME
FROM CUSTOMERS JOIN CITIES ON CUSTOMERS.CITY_ID = CITIES.ID
)
显然 H2 在嵌套查询中去除了表名,因此产生了两个名为 NAME 的列
(见COUNT with subquery fail on H2 database with "Duplicate column name")。
一个解决方案是在嵌套查询中使用列别名,但由于其他项目要求,我想避免它(即,我想使用由 Jooq 生成的列标识符来构建查询)。
你知道强制 H2 在嵌套查询中保留表名的方法吗?
【问题讨论】:
-
如何创建 jOOQ 查询?
-
@LukasEder 我们使用 Jooq DSL 构建查询,然后我们使用
dsl.fetchCount(query)计算query返回的行数。