mysql怎样求两个查询的交集

86次阅读
没有评论

共计 1111 个字符,预计需要花费 3 分钟才能阅读完成。

自动写代码机器人,免费开通

这篇文章主要介绍 mysql 怎样求两个查询的交集,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

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

mysql 求两个查询交集的方法:

一、项目需求:

需要获取包含一些流程变量(数量不确定,且必须都包含,不能只含其中某几个)的流程实例的实例 id

二、详细说明:

1、流程变量表 act_hi_varinst

字段:PROC_INST_ID_(流程实例 id)、NAME_(变量名)、TEXT_(变量值)

mysql 怎样求两个查询的交集

图 1

2、现在需要查询包含变量 formId=142 和 approveType=sealApply 的对应流程的实例 id

如图 1,只要查出红线框出的值,最终结果为

mysql 怎样求两个查询的交集

图 2

三、代码实现

1、首先尝试了使用 in 的写法,查询结果跟图 1 一样(下面查询语句表达的意思是:找出包含变量值为 formId=142 或 approveType=sealType 的流程的实例 id,多个变量条件只要有一个满足,就将该行取出来),该方法不可行

SELECT
ahv.PROC_INST_ID_,
ahv.NAME_,
ahv.TEXT_
act_hi_varinst ahv
WHERE
(ahv.NAME_, ahv.TEXT_) IN (( formId , 142),
(approveType , sealApply)
);

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

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

SELECT
PROC_INST_ID_
SELECT
ahv.PROC_INST_ID_
act_hi_varinst ahv
WHERE
(ahv.NAME_, ahv.TEXT_) = (formId , 142)
UNION ALL
SELECT
ahv.PROC_INST_ID_
act_hi_varinst ahv
WHERE
(ahv.NAME_, ahv.TEXT_) = (approveType , sealApply)
GROUP BY
PROC_INST_ID_
HAVING
count(PROC_INST_ID_) = 2;

以上是 mysql 怎样求两个查询的交集的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注丸趣 TV 行业资讯频道!

向 AI 问一下细节

丸趣 TV 网 – 提供最优质的资源集合!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-18发表,共计1111字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)