mysql如何求两个查询的交集

mysql如何求两个查询的交集,第1张

概述mysql如何求两个查询交集

MysqL求两个查询交集的方法:首先查满足单组变量键值对的流程实例ID;然后将每个变量键值对作为条件都分别查出对应的流程实例ID;最后对这两组流程实例ID取交集,这样得到的就是想要的结果了。

更多相关免费学习推荐:mysql教程(视频)

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,多个变量条件只要有一个满足,就将该行取出来),该方法不可行

SELECTahv.PROC_INST_ID_,ahv.name_,ahv.TEXT_FROMact_hi_varinst ahvWHERE(ahv.name_, ahv.TEXT_) IN (('formID', '142'),('approveType', 'sealApply'));

2、(可行方案)尝试使用交集(MysqL本身没有交集的实现,只能自己模拟实现了)

查询思路:先查满足单组变量键值对的流程实例ID,将每个变量键值对作为条件都分别查出对应的流程实例ID(当前例子下,会有两组流程实例ID),最终对这两组流程实例ID取交集,这样得到的就是想要的结果了

SELECTPROC_INST_ID_FROM(SELECTahv.PROC_INST_ID_FROMact_hi_varinst ahvWHERE(ahv.name_, ahv.TEXT_) = ('formID', '142')UNION ALLSELECTahv.PROC_INST_ID_FROMact_hi_varinst ahvWHERE(ahv.name_, ahv.TEXT_) = ('approveType', 'sealApply')) tGROUP BYPROC_INST_ID_HAVINGcount(PROC_INST_ID_) = 2;
总结

以上是内存溢出为你收集整理的mysql如何求两个查询的交集全部内容,希望文章能够帮你解决mysql如何求两个查询的交集所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1150782.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存