Maison > Article > base de données > Comment trouver l'intersection de deux requêtes dans MySQL
Méthode MySQL pour trouver l'intersection de deux requêtes : vérifiez d'abord l'ID d'instance de processus qui satisfait un seul ensemble de paires clé-valeur variable ; puis utilisez chaque paire clé-valeur variable comme condition pour trouver le processus correspondant ; ID d'instance; Enfin, faites l'intersection de ces deux ensembles d'ID d'instance de processus pour obtenir le résultat souhaité.
Plus de recommandations d'apprentissage gratuites connexes : tutoriel mysql (Vidéo)
Comment trouver l'intersection de deux requêtes dans MySQL :
Exigences du projet :
Besoin d'obtenir l'identifiant d'une instance de processus qui contient certaines variables de processus (le nombre est incertain et doit être inclus, pas seulement certaines d'entre elles)
2. Description détaillée :
1. Table des variables de processus act_hi_varinst
champs : PROC_INST_ID_ (identifiant de l'instance de processus), NAME_ (nom de la variable), TEXT_ (valeur de la variable)
Figure 1
2. Vous devez maintenant interroger l'identifiant d'instance du processus correspondant contenant les variables formId=142 et approuveType=sealApply
Comme le montre la figure 1, trouvez simplement la valeur indiquée dans la ligne rouge, le résultat final est
Figure 2
3. Implémentation du code
1. J'ai d'abord essayé d'utiliser dans Le résultat de la requête est le même que celui de la figure 1 (l'instruction de requête suivante signifie : recherchez l'ID d'instance du processus contenant la valeur de la variable formId=142 ou approuveType=sealType. Tant que l'un des les conditions de plusieurs variables sont satisfaites, la ligne sera Take it out), cette méthode n'est pas réalisable
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 (Solution réalisable) Essayez d'utiliser l'intersection (mysql lui-même n'a pas d'implémentation d'intersection, donc. vous ne pouvez le simuler que vous-même)
Idées de requête : vérifiez d'abord Pour l'ID d'instance de processus qui satisfait un seul ensemble de paires clé-valeur variable, chaque paire clé-valeur variable est utilisée comme condition pour connaître la ID d'instance de processus correspondant (dans l'exemple actuel, il y aura deux ensembles d'ID d'instance de processus), et enfin pour les deux ensembles de processus, prenez l'intersection des identifiants d'instance, vous obtenez ainsi le résultat souhaité
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;
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!