首頁  >  文章  >  資料庫  >  mysql如何求兩個查詢的交集

mysql如何求兩個查詢的交集

coldplay.xixi
coldplay.xixi原創
2020-10-26 15:56:512860瀏覽

mysql求兩個查詢交集的方法:首先查滿足單組變數鍵值對的流程實例id;然後將每個變數鍵值對作為條件都分別查出對應的流程實例id;最後對這兩組流程實例id取交集,這樣得到的就是想要的結果了。

mysql如何求兩個查詢的交集

#更多相關免費學習推薦:mysql教學

# #(影片)

mysql求兩個查詢交集的方法:

##一、專案需求:

需要取得包含一些流程變數(數量不確定,且必須都包含,不能只包含其中某幾個)的流程實例的實例id

二、詳細說明:mysql如何求兩個查詢的交集

1、流程變數表act_hi_varinst

欄位:PROC_INST_ID_(流程實例id)、NAME_(變數名稱)、TEXT_(變數值)

mysql如何求兩個查詢的交集#圖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如何求兩個查詢的交集的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn