Heim  >  Artikel  >  Datenbank  >  So finden Sie den Schnittpunkt zweier Abfragen in MySQL

So finden Sie den Schnittpunkt zweier Abfragen in MySQL

coldplay.xixi
coldplay.xixiOriginal
2020-10-26 15:56:512890Durchsuche

MySQL-Methode zum Ermitteln der Schnittmenge zweier Abfragen: Überprüfen Sie zunächst die Prozessinstanz-ID, die einen einzelnen Satz variabler Schlüssel-Wert-Paare erfüllt. Verwenden Sie dann jedes variable Schlüssel-Wert-Paar als Bedingung, um die entsprechende Prozessinstanz-ID zu finden Überprüfen Sie abschließend die beiden Gruppen. Nehmen Sie den Schnittpunkt der Prozessinstanz-IDs, um das gewünschte Ergebnis zu erhalten.

So finden Sie den Schnittpunkt zweier Abfragen in MySQL

Weitere verwandte kostenlose Lernempfehlungen: MySQL-Tutorial(Video)

MySQL-Methode zum Ermitteln der Schnittmenge zweier Abfragen:

1. Projektanforderungen:

Sie müssen die Instanz-ID einer Prozessinstanz erhalten, die einige Prozessvariablen enthält (die Anzahl ist unsicher und sie müssen alle enthalten sein, nicht nur einige davon)

2. Detaillierte Beschreibung:

1. Prozessvariablentabelle act_hi_varinst

Felder: PROC_INST_ID_ (Prozessinstanz-ID), NAME_ (Variablenname), TEXT_ (Variablenwert)

So finden Sie den Schnittpunkt zweier Abfragen in MySQL

Abbildung 1

2. Jetzt müssen Sie die Instanz-ID des entsprechenden Prozesses abfragen Die Variablen „formId=142“ und „approvType=sealApply“

Wie in Abbildung 1 gezeigt, lautet das Endergebnis

So finden Sie den Schnittpunkt zweier Abfragen in MySQL

Abbildung 2

3 1. Zuerst habe ich versucht, die schriftliche Methode zu verwenden, und die Abfrageergebnisse sind wie in Abbildung 1 dargestellt. (Die Bedeutung der folgenden Abfrageanweisung lautet: Finden Sie die Instanz-ID des Prozesses, der den Variablenwert formId=142 enthält genehmigtTyp=sealType, und solange eine der mehreren Variablenbedingungen erfüllt ist, wird die Zeile herausgenommen), ist diese Methode nicht durchführbar

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 (Machbare Lösung) Versuchen Sie, Schnittmenge zu verwenden (MySQL selbst hat keine Implementierung der Schnittmenge, sodass Sie sie nur selbst simulieren können)

Abfrageidee: Überprüfen Sie zunächst die Prozessinstanz-ID, die einen einzelnen Satz variabler Schlüssel-Wert-Paare erfüllt, und fügen Sie jede Variable hinzu. Schlüssel-Wert-Paare werden als Bedingungen verwendet, um dies herauszufinden die entsprechenden Prozessinstanz-IDs (im aktuellen Beispiel gibt es zwei Sätze von Prozessinstanz-IDs) und schließlich wird die Schnittmenge dieser beiden Sätze von Prozessinstanz-IDs ermittelt, sodass das gewünschte Ergebnis erhalten wird

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;

Das obige ist der detaillierte Inhalt vonSo finden Sie den Schnittpunkt zweier Abfragen in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn