错误的sql语法找不到“计数(状态)”列

polkgigr  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(311)

我有一个批处理作业,我正在测试内存中的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);
yptwkmov

yptwkmov1#

这听起来像是一些处理器在周围添加了backtics COUNT(STATUS) . COUNT(STATUS) 可能不是你想要的。对于每一行(每个年龄的name=“something”),选中 STATUS 因为存在 NOT NULL ,然后传递不为空的计数。 COUNT(*) 是计算行数的常用方法。
下一个问题,。。。 GROUP BY age ,但你却列出 name 以及 status . 哪个 name 你对每个年龄都有期望吗?
但还有一个难题。我看到三个双引号( " ). 好好想想。考虑对内部需求或外部需求使用单引号。

相关问题