mysql 批量查询到的id列表,是否有被另外一张表的字段所包含(包含一个即可)

最近重构了下滴滴的用例平台的目录结构,因为那个目录实在维护起来太难受了,一旦新增用例都得去维护一个这个json, 所以还是把这个json拆出来了,结果拆出来以后,遇到了一个数据丢失的问题。

我们先看下看下用例的表的设计

在这里插入图片描述

而原本的用例的逻辑是可以关联多个文件夹,所以这里的存储就是可能是多个目录id, 用 进行隔开存储。

一开始没有考虑这个问题时,我的sql查询是这样子的,为了能够知道一个目录下(包含他的子目录)有多少条用例

select
	id
from
	test_case
where
	biz_id in (
	select
		id
	from
		biz_v2
	where
		id = "6dbc73d6"
		or parent_tree_code like CONCAT("%", "6dbc73d6", "%")
			and is_delete = 0
			and product_line_id = "012d59e2c4bc12e0f15e1dd4e472a179"
    )
	and is_delete = 0

从上面的sql 就会发现当test_case 中的biz_id 是关联了多个目录的情况的话,这个数据就会被丢失掉。

那要怎么解决这个问题呢,这个问题最麻烦的点就在于 目录id 查询出来是多条数据 所以 这里的biz_id 就不能用 like 那么简单了。

查询了很久, 才发现,原来 where 条件里面其实是可以用到 中间临时表的字段的。

select
	id
from
	test_case a,
	(
	select
		id as biz_v2_id
	from
		biz_v2
	where
		id = "6dbc73d6"
		or parent_tree_code like CONCAT("%", "6dbc73d6", "%")
		and is_delete = 0
		and product_line_id = "012d59e2c4bc12e0f15e1dd4e472a179") b
where
	biz_id like concat("%", b.biz_v2_id, "%")

将查出的临时表中的 biz_v2_id 做有变量做 like即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值