【发布时间】:2021-01-04 21:25:31
【问题描述】:
长期潜伏和学习者,第一次在这里提问。我正在为当地图书馆开展一个项目,从他们的数据库中提取一些数据,以帮助员工提取为顾客搁置的书籍。这里的问题是对数据库的访问是只读的。我无法创建任何临时表或视图。
我们创建了一个长查询来生成所需的数据,我使用了几个 CTE 来精简内容,然后有一些逻辑基于这本书可能所在的位置来显示它应该从哪里选择。总而言之,我们对查询结果感到满意。
当我尝试使用 jdbcTemplate 来实现它时,我似乎找不到让 SELECT * 以外的任何东西工作的方法。
WITH holdCTE1 (holdID, itemID, ...) AS (
SELECT *
FROM
table 1,
table 2,
table 3
WHERE
yada yada
如果我随后执行 SELECT * FROM holdCTE1,这将为我提供结果。
如果我指定列,像这样
WITH holdCTE1 (holdID, itemID, ...) AS (
SELECT t1.holdID, t2.itemID, t3.title
FROM
table 1,
table 2,
table 3
WHERE
yada yada
无论如何,我在第一个表中遇到语法错误。我已经尝试调整我所有的表 JOIN 并使用别名以及我能遇到的几乎所有东西,但它似乎没有帮助。
我们用来帮助过滤的一些事情是调用子查询,例如,在 CTE1 中,我们添加了最后一列
'bib hold' AS hold_type
即使使用 SELECT *, 'bib hold AS hold_type,我也会遇到相同的语法错误。错误的实际措辞是:
StatementCallback; bad SQL grammar ... then my query ... nested exception is org.postgresql.util.PSQLException: ERROR: syntax error at or near ... the first thing under the FROM line
该库使用的是 Postgresql 数据库,我在 SQL 端使用带有 jdbcTemplate 的 Spring。
提前感谢您的关注。
【问题讨论】:
标签: postgresql spring-boot jdbctemplate