not exist 解决一对多 场景 条件过滤问题

embedded/2024/12/22 19:54:23/

场景:

现在存在一对多关系,蓝色的盒子装的篮球,黄的的盒子装的黄球,
黑色的盒子 (模拟工作类似场景)

boxIdballId
蓝盒ID-15
蓝盒ID-16
蓝盒ID-17
黄盒ID-212
黄盒ID-215
黄盒ID-216
黑盒ID-38
黑盒ID-39

需求:

例如 6,7,15这三个球为坏球,我现在不想查出这三个球以及他们所属的盒子的数据。

正常的left join where 实现不了这个效果。

sql">select *  from  boxleft join Ball ON Box.id = Ball.boxIdwhere Ball.boxId not in (6,7,15)

查出的效果:

boxIdballId
蓝盒ID-15
黄盒ID-212
黄盒ID-216
黑盒ID-38
黑盒ID-39

但其实想要的效果是:

boxIdballId
黑盒ID-38
黑盒ID-39

因为 6,7都属于蓝盒ID-1这个组,6,7为坏球 ,只要蓝盒ID-1的数据我就要过滤掉

15 同理,属于黄盒ID-2,只要是黄盒ID-2的数据就要过滤掉。

所以 思路就是

先根据目标坏球 查出对应的盒子Id,再根据盒子Id来过滤。

sql">select box.id,*  from  boxleft join Ball ON Box.id = Ball.boxIdwhere xxxand NOT EXISTS(select t.id from Ball t where t.id in (6,7,15) where t.id = box.id)

当然不用exist 用in也可以实现,这里就是给出了一种解决思路。


http://www.ppmy.cn/embedded/120260.html

相关文章

完美解决Ubuntu下vi编辑器方向键变字母的问题

问题分析:ubuntu预装的是vim tiny版本,而需要的是vim full版本。执行下面的语句安装vim full版本: 一.执行命令 sudo apt remove vim-common 二.执行命令 sudo apt install vim

后端-对表格数据进行添加、删除和修改

一、添加 要求: 按下添加按钮出现一个板块输入添加的数据信息,点击板块的添加按钮,添加;点击取消,板块消失。 实现: 1.首先,设计页面输入框格式,表格首行 2.从数据库里调数据 3.添加…

如何使用便签高效管理自己的工作和时间?

在快节奏的现代生活中,我们每天都要面对众多工作任务,而时间却是有限的。如何在有限的时间内高效地完成工作,成为了每个职场人士必须面对的挑战。为了更好地管理时间,提高工作效率,我们往往需要借助一些工具来帮助我们…

java落地AI模型案例分享:xgboost模型java落地

xgboost模型java落地 1. 什么是XGBoost XGBoost是陈天奇等人开发的一个开源机器学习项目,高效地实现了GBDT算法并进行了算法和工程上的许多改进,被广泛应用在Kaggle竞赛及其他许多机器学习竞赛中并取得了不错的成绩。 说到XGBoost,不得不提…

jmeter进行性能测试实践

设置场景接口 一、通过抓取一个场景的接口(抓包) 自己抓取需要的接口,进行依赖 流程:1.在网页上F12抓取登录页面和登出页面的URL。2.在jemeter设置线程组,添加http请求输入URL等。3.查看结果数 二、通过boday录制 …

动静态库(Linux)

文章目录 前言一、静态库二、动态库三、深入理解动态库总结 前言 我们之前用过c语言的库.Linux中默认的都是使用动态库,如果想要使用静态库,就必须加上-static选项。默认都是安装的动态库,系统中一般没有静态库,如果要使用&#…

Vue2配置环境变量的注意事项

在实际开发中时常会遇到需要开发环境与生产环境中一些参数的替换,为了方便线上线下环境变量切换可以利用node中的process进行环境变量管理 实现步骤如下: 1.在 根目录 新增环境文件 .env.development 和 .env.production 注意文件名称保持一致( 需要强调的是文件中的变量名切…

​​合​​合​​信​息​​​龙​​湖​​数​​科​​一​​面​​​

1. 请尽可能详细地说明,Git中merge和rebase的区别和应用场景?Git中pull和fetch的区别和应用场景?Git中revert和reset的区别和应用场景?你的回答中不要写出示例代码。 Git中merge和rebase的区别和应用场景 merge 区别&#xff1…