作者:BB_KYLE | 来源:互联网 | 2020-12-01 17:54
mysql求两个查询交集的方法:首先查满足单组变量键值对的流程实例id;然后将每个变量键值对作为条件都分别查出对应的流程实例id;最后对这两组流程实例id取交集,这样得到的就是想要的结果了。
mysql求两个查询交集的方法:首先查满足单组变量键值对的流程实例id;然后将每个变量键值对作为条件都分别查出对应的流程实例id;最后对这两组流程实例id取交集,这样得到的就是想要的结果了。
图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如何求两个查询的交集的详细内容,更多请关注 第一PHP社区 其它相关文章!