Jfinal使用sql模板引擎查询结果出错,请教一下是什么问题

使用sql.show()将sql打印出来,复制到客户端运行没有问题,但是在代码里运行,加载sql文件,分组结果就不对了

出错得写法

area_code,concentrator_code,
 (id)
lamp_real_data
update_time > DATE_ADD(NOW(),-)

(lamp_real_data.area_code =  (SELECT area_code FROM lamp_area WHERE id = #para(areaId) ))
area_code,concentrator_code
返回结果只有一条汇总得
{
   "msg" : "请求成功",
   "code" : 0,
   "data" : [
      {
         "COUNT(id)" : 1132,
         "area_code" : 2,
         "concentrator_code" : 30
      }
   ]
}


但是想要得结果是count各个分组得结果,这样好像没有group

但是如果改成
area_code,concentrator_code,
 (id)
lamp_real_data
update_time > DATE_ADD(NOW(),-)

(lamp_real_data.area_code =  )
area_code,concentrator_code

将子查询改为2,则可以得到正常得分组结果

{
   "msg" : "请求成功",
   "code" : 0,
   "data" : [
      {
         "COUNT(id)" : 79,
         "area_code" : 2,
         "concentrator_code" : 30
      },
      {
         "COUNT(id)" : 28,
         "area_code" : 2,
         "concentrator_code" : 31
      }
   ]
}


在sql模板引擎中子查询不能用吗?


评论区

localhost8080

2018-07-04 11:54

还有几次显示出来"GROUP_BY_DERIVED_0" : 2, "GROUP_BY_DERIVED_1" : 31,这个字段返回,不明白这个字段从哪来的

JFinal

2018-07-04 12:37

@localhost8080 sql 模板引擎只负责生成 sql + paras,具体执行还是原来那套 API,检查一下最终生成的 sql 与 paras 是不是正确的

这些数据在 SqlPara 这个对象中,展开这个对象中的属性即可看到

localhost8080

2018-07-04 14:08

@JFinal 检查过了,都没错,可是最后输出结果就是不一样,把jfinal最终执行得sql复制到mysql 客户端软件中执行都没有问题,在Db.find中就只会返回一条总得count得结果,不知道怎么回事,是不是和子查询有关系,把子查询换成固定得数值,结果就是对得,现在找不到原因??

localhost8080

2018-07-04 14:27

我试了网上在最外面加上一条select * from xxx 还是只返回一条总得 结果,group好像没有起作用

localhost8080

2018-07-04 14:38

https://www.oschina.net/question/1040722_173138 这个试了,没解决问题

localhost8080

2018-07-04 14:41

@JFinal 我换成db.find写结果也一样那个里面得子查询会影响group by嘛?换成子查询得结果,固定一个数值 ,就是正确的额,该怎么解决

localhost8080

2018-07-04 15:05

area_code = (子查询) 是不是不能这样写?在后面加group by 返回结果集不对额

热门反馈

扫码入社