我有一个批处理作业,我正在测试内存中的h2数据库。我有一个读卡器,安装在我的电脑上的数据库工作得非常好。但是当我用h2测试它时,我得到一个错误:
org.springframework.jdbc.badsqlgramarexception:尝试处理下一行失败;错误的sql语法[select name,age,status,count(status)from mytable];嵌套异常为org.h2.jdbc.jdbcsqlexception:未找到列“count(status)”[42122-197]
这是我的读者。我不知道为什么我会犯以上的错误。
JdbcCursorItemReader<myObject> reader = new JdbcCursorItemReader<>();
reader.setSql("select name, age, status, COUNT(STATUS) from myTable
where name="something",
group by name, age, status
order by name, age, status);
1条答案
按热度按时间yptwkmov1#
这听起来像是一些处理器在周围添加了backtics
COUNT(STATUS)
.COUNT(STATUS)
可能不是你想要的。对于每一行(每个年龄的name=“something”),选中STATUS
因为存在NOT NULL
,然后传递不为空的计数。COUNT(*)
是计算行数的常用方法。下一个问题,。。。
GROUP BY age
,但你却列出name
以及status
. 哪个name
你对每个年龄都有期望吗?但还有一个难题。我看到三个双引号(
"
). 好好想想。考虑对内部需求或外部需求使用单引号。