这篇文章主要介绍mysql怎样求两个查询的交集,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
mysql求两个查询交集的方法:首先查满足单组变量键值对的流程实例id;然后将每个变量键值对作为条件都分别查出对应的流程实例id;最后对这两组流程实例id取交集,这样得到的就是想要的结果了。
mysql求两个查询交集的方法:
一、项目需求:
需要获取包含一些流程变量(数量不确定,且必须都包含,不能只含其中某几个)的流程实例的实例id
二、详细说明:
1、流程变量表act_hi_varinst
字段:PROC_INST_ID_(流程实例id)、NAME_(变量名)、TEXT_(变量值)
图1
2、现在需要查询包含变量formId=142和approveType=sealApply的对应流程的实例id
如图1,只要查出红线框出的值,最终结果为
图2
三、代码实现
1、首先尝试了使用in的写法,查询结果跟图1一样(下面查询语句表达的意思是:找出包含变量值为formId=142或approveType=sealType的流程的实例id,多个变量条件只要有一个满足,就将该行取出来),该方法不可行
SELECT ahv.PROC_INST_ID_, ahv.NAME_, ahv.TEXT_ FROM act_hi_varinst ahv WHERE (ahv.NAME_, ahv.TEXT_) IN ( ('formId', '142'), ('approveType', 'sealApply') );
2、(可行方案)尝试使用交集(mysql本身没有交集的实现,只能自己模拟实现了)
查询思路:先查满足单组变量键值对的流程实例id,将每个变量键值对作为条件都分别查出对应的流程实例id(当前例子下,会有两组流程实例id),最终对这两组流程实例id取交集,这样得到的就是想要的结果了
SELECT PROC_INST_ID_ FROM ( SELECT ahv.PROC_INST_ID_ FROM act_hi_varinst ahv WHERE (ahv.NAME_, ahv.TEXT_) = ('formId', '142') UNION ALL SELECT ahv.PROC_INST_ID_ FROM act_hi_varinst ahv WHERE (ahv.NAME_, ahv.TEXT_) = ('approveType', 'sealApply') ) t GROUP BY PROC_INST_ID_ HAVING count(PROC_INST_ID_) = 2;
以上是mysql怎样求两个查询的交集的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。