ホームページ >データベース >mysql チュートリアル >mysqlで2つのクエリの共通部分を見つける方法
2 つのクエリの共通部分を見つけるための Mysql メソッド: まず、単一セットの変数キーと値のペアを満たすプロセス インスタンス ID を確認し、次に各変数キーと値のペアを条件として使用して、対応するプロセスを検索します。インスタンス ID; 最後に、これら 2 セットのプロセス インスタンス ID の共通部分を取得して、目的の結果を取得します。
その他の関連する無料学習の推奨事項: mysql チュートリアル#(ビデオ)
##2 つのクエリの共通部分を見つける Mysql メソッド:
1. プロジェクト要件:
いくつかのプロセス変数を含むプロセス インスタンスのインスタンス ID を取得する必要があります (数は不確実なので、一部だけではなく含める必要があります)
2. 詳細な説明:
1. プロセス変数テーブル act_hi_varinst
フィールド: PROC_INST_ID_(プロセス インスタンス ID)、NAME_(変数名)、TEXT_(変数値)図 1
2. 次に、変数 formId=142 およびapproveType=sealApplyを含む、対応するプロセスのインスタンス ID をクエリする必要があります。図 1 に示すように、赤い線のボックス内の値、最終結果は#図 2
3. コードの実装##1. 最初に使用しようとしたクエリ結果は図 1 と同じです (次のクエリ ステートメントは、変数値 formId=142 またはapproveType=sealType を含むプロセスのインスタンス ID を検索することを意味します。複数の変数条件が満たされている場合、行は Take it out になります)、この方法は実行可能ではありません
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. (実現可能な解決策) Intersection を使用してみてください (mysql 自体には Intersection の実装がないため、自分でシミュレートすることしかできません)
クエリのアイデア: 最初に確認する 単一セットの変数キーと値のペアを満たすプロセス インスタンス ID について、各変数キーと値のペアは、対応するキーと値のペアを見つけるための条件として使用されます。プロセス インスタンス ID (現在の例では、2 セットのプロセス インスタンス ID があります)、最後に 2 セットのプロセスについてインスタンス 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で2つのクエリの共通部分を見つける方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。