最近重构了下滴滴的用例平台的目录结构,因为那个目录实在维护起来太难受了,一旦新增用例都得去维护一个这个json, 所以还是把这个json拆出来了,结果拆出来以后,遇到了一个数据丢失的问题。
我们先看下看下用例的表的设计
而原本的用例的逻辑是可以关联多个文件夹,所以这里的存储就是可能是多个目录id, 用,
进行隔开存储。
一开始没有考虑这个问题时,我的sql查询是这样子的,为了能够知道一个目录下(包含他的子目录)有多少条用例
select
idfrom
test_casewhere
biz_idin(select
idfrom
biz_v2where
id="6dbc73d6"or parent_tree_codelike CONCAT("%","6dbc73d6","%")and is_delete=0and product_line_id="012d59e2c4bc12e0f15e1dd4e472a179")and is_delete=0
从上面的sql 就会发现当test_case
中的biz_id
是关联了多个目录的情况的话,这个数据就会被丢失掉。
那要怎么解决这个问题呢,这个问题最麻烦的点就在于 目录id 查询出来是多条数据 所以 这里的biz_id 就不能用like
那么简单了。
查询了很久, 才发现,原来 where 条件里面其实是可以用到 中间临时表的字段的。
select
idfrom
test_case a,(select
idas biz_v2_idfrom
biz_v2where
id="6dbc73d6"or parent_tree_codelike CONCAT("%","6dbc73d6","%")and is_delete=0and product_line_id="012d59e2c4bc12e0f15e1dd4e472a179") bwhere
biz_idlike concat("%", b.biz_v2_id,"%")
将查出的临时表中的 biz_v2_id 做有变量做 like即可