1、出现问题:

java内用Example拼接条件时,导致查询出来的数据不一致。

当时的查询条件时这样,导致查询数据增多,从而不对,不是一一对应。

if (pageParam.getIsUseSettle() != null) {criteria.andCondition(" commodity_id in (select commodity_id from a where is_delete = 0 and biz_status = 1 and is_use_settle = " + pageParam.getIsUseSettle() + ") ");criteria.andCondition(" supplier_id in (select supplier_id from a where is_delete = 0 and biz_status = 1 and is_use_settle = " + pageParam.getIsUseSettle() + ") ");}

2、解决问题

mysql支持一一对应的sql查询:

修改后如下:

  if (pageParam.getIsUseSettle() != null) {criteria.andCondition("(commodity_id,supplier_id) IN ( SELECT commodity_id,supplier_id FROM a WHERE is_delete = 0 AND biz_status = 1 AND is_use_settle =  " + pageParam.getIsUseSettle() + ") ");}

这样就是一一对应,查询出数据就是正确的。

后端打印出sql如下:

SELECT*
FROMb
WHERE((account_status = 2 AND (commodity_id,supplier_id) IN ( SELECT commodity_id,supplier_id FROM a WHERE is_delete = 0 AND biz_status = 1 AND is_use_settle = 0 ) ) AND ( is_delete = 0 ) )
ORDER BYaudit_time DESC LIMIT 20;

3、总结

多个字段同时使用

select * from user where (user_id,status) in ((1,2),(2,2),(3,2));

多表同时多个字段使用

select * from user where (legal_id,status) not in (select a.legal_id,a.type from user as a , role_user_relation as b  where a.legal_id=b.legal_id and a.type=b.legal_type) limit 0,10;

但是不建议这样用,不走索引,能直接关联的sql,就用连接join,除非在java代码拼接sql才这样用。

java/mysql多个字段in从而保持字段一一对应相关推荐

  1. java mysql blob 存储图片,Java实现用Mysql存取图片操作实例

    1.MySQL中的BLOB类型 Mysql中可以存储大文件数据,一般使用的BLOB对象.如图片,视频等等. BLOB是一个二进制大对象,可以容纳可变数量的数据.因为是二进制对象,所以与编码方式无关.有 ...

  2. java+mysql性能优化_Java培训实战教程之mysql优化

    Java培训实战教程之mysql优化 更新时间:2015年12月29日13时30分 来源:传智播客Java培训学院 浏览次数: 1.   mysql引擎 1.1.  引擎类型 MySQL常用的存储引擎 ...

  3. MySQL数据库建表时对于某个字段设置了默认值,但是使用Spring Data Jpa的save后默认值没有生效

    问题描述:MySQL数据库建表时对于某个字段设置了默认值,但是使用Spring Data Jpa的save后默认值没有生效.MySQL数据库中构建的用户表表结构如下所示: DROP TABLE IF ...

  4. Java+MySQL实现评论功能设计开发

    Java+MySQL实现评论功能设计开发 一.背景 项目初始版本上线,有时间写点东西记录一下项目中的心得体会,通过这个项目学习了很多,要写下来的有很多,先从评论功能开始吧.由于项目需要增加评论功能,之 ...

  5. 【Java+MySQL】使用JDBC连接MySQL 8.0数据库

    一.Java MySQL 8.0连接驱动包 下载链接:https://pan.baidu.com/s/1YFOImz0dCHtzIajSFq9xgg?pwd=boul 提取码:boul [IDEA]导 ...

  6. Java mysql获取行数_java – MySQL查询获取球体中的行(X,Y,Z坐标)?

    我正在制作一个名为Minecraft with Bukkit API的游戏插件. 我有一个名为Reinforcements的数据库表,其中包含以下字段:x integer,y integer,z in ...

  7. java字段映射配置,mybati 字段映射

    Java中属性命名一般使用驼峰命名法,mysql中的字段一般使用"_"来连接两个单词.例如mysql中一般都是 admin_id 而不是adminId,java程序中在dao层定义 ...

  8. JAVA MySQL数据库 笔记

    MySQL数据库 1. 初始MySQL 1.1 为什么学习数据库 岗位技能需求 现在的世界,得数据者得天下 网站中数据存储的地方 数据库是几乎软件体系中最核心的一个存在. 1.2 什么是数据库 数据库 ...

  9. 基于javaweb的慢病报销管理信息系统(java+mysql+jdbc+servlet+jsp)

    基于javaweb的慢病报销管理信息系统(java+mysql+jdbc+servlet+jsp) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/m ...

  10. 基于javaweb+jsp的生病慢病报销管理信息系统(java+MySQL+Jdbc+Servlet+Jsp)

    基于javaweb+jsp的生病慢病报销管理信息系统(java+MySQL+Jdbc+Servlet+Jsp) 一.项目简述 功能: 慢病管理,医疗机构管理,家庭管理,费用交纳,费用报销,报表统计等等 ...

最新文章

  1. GAN还有这种操作!谷歌大脑和X实验室利用模拟条件和域适应提高机器抓取效率(附论文)
  2. Windows 2000/NT/XP管理员密码丢失解决方法
  3. rabbitmq 连接报错 An unexpected connection driver error occured(亲测)
  4. php5.5升级到php5.6,从php5.5.9升级到php5.6之后,相当于php5enmod?
  5. ElasticSearch bool过滤查询
  6. 华为成了!鸿蒙OS 2.0对比iOS 14:苹果流畅度竟完败?
  7. 光纤跳线的交叉连接注意点?
  8. C++动态连接库动态加载
  9. SQL Server Compact 3.5 SP1 RTM发布了!
  10. Java串口通信(RXTX)
  11. MVVM框架原理浅析
  12. 计算机computer英语划分音节,computer是什么意思
  13. matlab 仿真短路故障设置,基于MatlabSimulink的电力系统故障仿真与
  14. wx.showToast() 在真机中一闪而过
  15. 5G 与 MEC 边缘计算
  16. SpringBoot通过自定义注解实现模板方法设计模式
  17. 开源一文多发平台ArtiPub,让文章随处可阅
  18. HoloCubic-稚晖君开源项目制作心得
  19. android蓝牙传文件在哪里找,手机蓝牙传输的文件在哪里_华为手机蓝牙传输记录在哪-系统城...
  20. MyDocument.exe病毒查杀方法

热门文章

  1. WPS/WORD设置每一页显示50行代码或者是固定数量的行数
  2. 安装Power BI Desktop在线报错关于windows10家庭版更新中遇到的 “你的设备中缺少重要的安全和质量修复”问题
  3. 物联网SIM卡和SIM卡真的不是一回事
  4. shell 获得脚本路径的方法
  5. JAVA旅游景点订票系统毕业设计 开题报告
  6. arduino二位数码管_用arduino和2个74HC595级联控制8位数码管显示
  7. 生产订单组件新增 修改 删除
  8. Windows 7中禁用连按五次Shift键时出现粘滞键的方法
  9. 微信小程序--放入个性化手绘地图具体步骤(腾讯地图)
  10. linux 获取上两级目录下,Linux系统目录大小通过du命令获取实例