So erhalten Sie die Schnittmenge/Differenz/Vereinigung zweier Mengen in MySQL

So erhalten Sie die Schnittmenge/Differenz/Vereinigung zweier Mengen in MySQL

Typische MySQL-Szenarien: Schnittmenge und Differenz zweier Datensätze ermitteln

Schritt

1. Die Strukturen der beiden Sammlungen müssen konsistent sein, mit entsprechender Anzahl von Feldern und Feldtypen

2. Kombinieren Sie die beiden Sets mit dem Schlüsselwort UNION ALL. Das Ergebnis sind hier alle Sets mit Duplikaten.

3. GROUP BY-ID für alle oben genannten Sets

4. Schließlich HAVING COUNT(id)=1. Wenn es gleich 1 ist, bedeutet dies, dass es nur einmal vorkommt, also handelt es sich um eine Differenzmenge. Wenn es gleich 2 ist, handelt es sich um eine Schnittmenge.

Code-Demonstration

Unterschied

Das folgende SQL weist offensichtliche Probleme auf, aber dies ist nur ein Hinweis.

Es ist nicht erforderlich, Schnittmenge und Differenz zu verwenden, um eine Abfrage aus einer Tabelle durchzuführen. Die Bedingungen können kombiniert werden, um direkt abzufragen. Es ist gut, die Bedeutung zu verstehen.

Mit der folgenden SQL-Anweisung können Sie die ID, den Code und den Namen aller nichttechnischen Mitarbeiter ermitteln

WÄHLEN Sie a.* FROM(
    Wählen Sie ID, Code, Name aus test_emp
    UNION ALLE
    Wählen Sie ID, Code, Name aus test_emp, wo Abteilung = 'JSB'
)eine GRUPPE NACH a.id HAVING COUNT(a.id)=1

Überschneidung

Mit dem folgenden SQL-Befehl werden alle Mitarbeiter der technischen Abteilung gefunden, die älter als 25 Jahre sind

WÄHLEN Sie a.* FROM(
    Wählen Sie ID, Code, Name aus Test_Emp, wobei Alter > 25 ist
    UNION ALLE
    Wählen Sie ID, Code, Name aus test_emp, wo Abteilung = 'JSB'
)eine GRUPPE NACH a.id HAVING COUNT(a.id)=2

Union

Mit dem folgenden SQL-Befehl können Sie alle Mitarbeiter der technischen Abteilung und alle Mitarbeiter über 30 finden.

Union kann doppelte Inhalte automatisch entfernen und einen nicht doppelten Ergebnissatz erhalten

WÄHLEN Sie a.* FROM(
    Wählen Sie ID, Code, Name aus Test_Emp, wobei Alter > 25 ist
    UNION
    Wählen Sie ID, Code, Name aus test_emp, wo Abteilung = 'JSB'
)

Schnittmenge, Vereinigung, Differenz, Linksverknüpfung, Rechtsverknüpfung in MySQL

Ich habe MySQL einen Monat lang gelernt. In diesem Monat habe ich je nach Bedarf einige grundlegende Operationen an der Datentabelle durchgeführt. Dabei habe ich häufig Left Join, Right Join, Schnittmenge, Differenzmenge usw. verwendet. Jetzt werde ich die grundlegenden Operationen zusammenfassen.

Datenquelle:

Tabelle 1:

ID Name Geschlecht Alter

1 mike1 männlich 34
1 mike2 Männlich 23
1 mike3 Weiblich 24
2 mike1 Männlich 46
2 mike2 Männlich 35
2 mike3 Männlich 42
2 mike4 männlich 62
3 mike1 Weiblich 45
4 mike5 männlich 72
5 mike4 Weiblich 23

Tabelle 2:

ID-Schule

1 Peking-Universität

2 Tsinghua-Universität

3. Harvard Universität

7. MIT

Linke Verbindung:

Verbindet Tabellen basierend auf einer Gleichheitsbedingung. Dieses Experiment soll einen Left Join durchführen, wenn die ID gleich ist

Code:

wähle a.*,b.Schule 
AUS 
(SELECT * FROM mike1.test001) ein
LINKS VERBINDEN
(SELECT id,school FROM mike1.test003 ) b
EIN a.id=b.id

Das Ergebnis ist wie folgt: Tabelle 1 wird als Grundlage verwendet, um Tabelle 2 zu verbinden und die gleiche ID-Nummer abzugleichen

Richtiger Beitritt:

Nehmen Sie Tabelle 2 als Wurzel und führen Sie einen Rechtsverknüpfungsvorgang über die Felder mit der gleichen ID durch.

Code:

wähle a.*,b.Schule 
AUS 
(SELECT * FROM mike1.test001) ein
richtig BEITRETEN
(SELECT id,school FROM mike1.test003 ) b
EIN a.id=b.id

Ergebnis:

Glauben Sie, dass mit dem Ergebnis ein Problem vorliegt oder nicht?

Überschneidung:

Durch Verwendung derselben ID-Nummer wird ein innerer Join für Tabelle 1 und Tabelle 2 durchgeführt, wobei dieselben Teile übernommen und die unterschiedlichen Teile weggelassen werden.

Code:

wähle a.*,b.schule 
AUS 
(SELECT * FROM mike1.test001) ein
innerer JOIN
(SELECT id,school FROM mike1.test003 ) b
EIN a.id=b.id

Ergebnis:

Unterschied:

Relativ häufig werden Differenzmengen verwendet, die den Mengenoperationen wie Schnittmenge, Kombination und Vereinigung ähneln, die wir in der Mathematik gelernt haben.

Code 1: Holen Sie sich denselben Teil von Tabelle 2 wie Tabelle 1. Dies ist die zweite Methode zum Erhalten der oben erwähnten Schnittmenge.

Wählen Sie eine ID, einen Namen, ein Geschlecht, ein Alter und eine Schule aus. 
AUS 
(SELECT * FROM mike1.test001) ein
Linker äußerer Join
(SELECT id,school FROM mike1.test003 ) b
EIN a.id=b.id
WO b.id NICHT null ist

Ergebnis:

Code2: Nehmen Sie die Differenz zwischen der ID in Tabelle 1 und der ID in Tabelle 2 und listen Sie schließlich die Daten auf.

Wählen Sie eine ID, einen Namen, ein Geschlecht, ein Alter und eine Schule aus. 
AUS 
(SELECT * FROM mike1.test001) ein
Linker äußerer Join
(SELECT id,school FROM mike1.test003 ) b
EIN a.id=b.id
WO b.id null IST

Ergebnis:

Das Obige ist meine persönliche Erfahrung. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden.

Das könnte Sie auch interessieren:
  • MySQL implementiert den Minus- und Intersect-Testbericht
  • So implementieren Sie die Schnittmenge von MySQL-Abfrageergebnissen
  • Java8-Beispiele für Differenzmengen, Vereinigungsmengen und Schnittmengen

<<:  Detaillierte Erklärung der CSS-Float-Eigenschaft

>>:  Gogs+Jenkins+Docker automatisierte Bereitstellung von .NetCore-Schritten

Artikel empfehlen

So überwachen Sie die Windows-Leistung auf Zabbix

Hintergrundinformationen Ich habe kürzlich einige...

Drei Möglichkeiten, das horizontale Div-Layout auf beiden Seiten auszurichten

In diesem Artikel werden hauptsächlich drei Metho...

Online- und Offlineinstallation von Docker und allgemeine Befehlsvorgänge

1. Testumgebung Name Version centos 7.6 Docker 18...

Perfekte Lösung für asynchrone Timeout-Vorgänge im JavaScript-Frontend

Inhaltsverzeichnis Was passiert, wenn die Ausführ...

Vue Virtual DOM – Schnellstart

Inhaltsverzeichnis Virtueller DOM Was ist virtuel...

Implementierung der Multisite-Konfiguration von Nginx auf Mac M1

Hinweis: nginx über brew installiert Stammverzeic...

Verwenden von Streaming-Abfragen in MySQL, um Daten-OOM zu vermeiden

Inhaltsverzeichnis 1. Einleitung 2. JDBC implemen...

Richtiger Einsatz von MySQL-Partitionstabellen

Übersicht über partitionierte MySQL-Tabellen Wir ...

In einem Artikel erfahren Sie, wie Sie ein Vue-Plugin schreiben

Inhaltsverzeichnis Was ist ein Plugin Plugins sch...

Detaillierte Analyse von GUID-Anzeigeproblemen in Mongodb

Finden Sie das Problem Ich habe kürzlich den Spei...