首页 > 编程知识 正文

jdbc statement 到底是啥,python jdbc连接数据库

时间:2023-05-05 01:07:30 阅读:237483 作者:4621

本来有个要求,就是查询出同一组F_process_key 下,版本F_deployment_version 最高的数据,我的sql如下:

SELECTwd.*FROMtable_wd wdWHEREwd.F_id = (SELECTF_idFROMtable_wdWHERE F_process_key = wd.F_process_key ORDER BY F_deployment_version DESC LIMIT 1)ORDER BY wd.F_id DESC;

在navicat上运行也没问题,然后就放到了mapper的xml中,并加上动态sql的条件判断

结果却出乎意料

日志打印:

格式化后的sql如下:

SELECTwd.*FROMt_ticket_workflow_deployment wdWHERE1 = 1AND wd.F_id = (SELECTF_id,F_deployment_version AS sharding_gen_1FROMt_ticket_workflow_deploymentWHEREF_process_key = wd.F_process_keyAND F_deployment_status = 2ORDER BYF_deployment_version DESCLIMIT 1)ORDER BYwd.F_id DESC

可以看到莫名其妙多了一个F_deployment_version AS sharding_gen_1,并直接导致了子查询返回两个结果,报错。

初步判断是sharding-jdbc搞的鬼。但是网上搜索了没找到有用信息

最后妥协解决方法: 子查询改成自己和自己连接查询

SELECTa.*FROMt_ticket_workflow_deployment a,(SELECTF_process_key,MAX(F_deployment_version) vFROMt_ticket_workflow_deploymentGROUP BYF_process_key) bWHEREb.F_process_key = a.F_process_keyAND b.v = a.F_deployment_versionAND a.F_deployment_status = 2GROUP BYa.F_process_keyORDER BYa.F_id DESC

有知道如何解决或者问题原因的欢迎指导

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。