1. Was ist eine Unterabfrage?Liste aller Kunden, die den Artikel TNT2 bestellt haben: wählen Sie Kunden-ID von Bestellungen wobei Bestellnummer IN (SELECT Bestellnummer von Bestellartikeln wobei prod_id = "TNT2" ) Formatierte Es gibt keine Begrenzung für die Anzahl der Unterabfragen, die verschachtelt werden können. In der Praxis können jedoch aufgrund von Leistungseinschränkungen nicht zu viele Unterabfragen verschachtelt werden. Notiz:
Unterabfragen können nicht nur in Angenommen, Sie müssen die Gesamtzahl der Bestellungen für jeden Kunden in der Wählen Sie Kundenname, Kundenstatus, (SELECT COUNT(*) FROM Bestellungen WHERE Bestellungen.Kunden-ID = Kunden.Kunden-ID) als Bestellungen von Kunden ORDER BY Kundenname Der
Hier ist die Verbindung: SELECT Verkäufername, Produktname, Produktpreis VON Anbietern, Produkten WO anbieter.vend_id = produkte.vend_id ORDER BY Verkaufsname, Produktname Notiz:
Dies ist die Funktion der Where-Anweisung zum Verknüpfen:
Notiz:
Die folgende SELECT-Anweisung gibt genau dieselben Daten zurück wie das vorherige Beispiel: SELECT Verkäufername, Produktname, Produktpreis VON Anbietern INNER JOIN Produkte auf Anbieter.vend_id = products.vend_id ORDER BY Händlername, Produktname Welche Syntax soll verwendet werden? Überlegungen zur Leistung: Experimentieren Sie viel. Wie Sie sehen, gibt es normalerweise mehr als eine Möglichkeit, einen bestimmten SQL-Vorgang auszuführen. Es gibt selten absolut richtige oder falsche Wege, Dinge zu tun. Die Leistung kann durch die Art des Vorgangs, die Datenmenge in der Tabelle, das Vorhandensein von Indizes oder Schlüsseln und andere Bedingungen beeinträchtigt werden. Daher ist es notwendig, mit verschiedenen Auswahlmechanismen zu experimentieren, um denjenigen zu finden, der für eine bestimmte Situation am besten geeignet ist. Wir können auch mehrere Tabellenverknüpfungen verwenden, aber dabei tritt ein Problem auf: Da der Tabellenname an mehreren Stellen verwendet wird und daher sehr lang ist, können Sie den Tabellenalias verwenden. wie: Nachfolgend werden einige spezielle Verbindungen vorgestellt. 2. Selbst beitreten Angenommen, Sie stellen fest, dass ein Artikel (mit der So können Sie dieses Problem lösen: Sie könnten eine Unterabfrage wie diese verwenden: Wählen Sie Produkt-ID, Produktname aus. von Produkten wobei vend_id = (SELECT vend_id aus products WHERE prod_id ='DTNTR') Es können auch Self-Joins verwendet werden. Wählen Sie t1.prod_id,t2.prod_name aus Produkten t1, Produkten t2 wobei t1.vend_id = t2.vend_id und t1.prod_id='DTNTR' Verwenden von Self-Joins anstelle von Unterabfragen Self-Joins werden häufig als äußere Anweisungen verwendet, um Unterabfragen zu ersetzen, die beim Abrufen von Daten aus derselben Tabelle verwendet werden. Obwohl das Endergebnis dasselbe ist, kann ein Join manchmal viel schneller verarbeitet werden als eine Unterabfrage. Sie sollten beide Ansätze ausprobieren, um festzustellen, welcher besser funktioniert. 3. Natürlicher JoinWenn Sie Tabellen verknüpfen, sollte es mindestens eine Spalte geben, die in mehr als einer Tabelle vorkommt (die verknüpfte Spalte). Ein Standard-Join (der im vorherigen Kapitel beschriebene Inner Join) gibt alle Daten zurück, auch wenn dieselben Spalten mehrfach vorkommen. Durch den natürlichen Join werden Mehrfachvorkommen eliminiert, so dass jede Spalte nur einmal zurückgegeben wird. Wie kann diese Arbeit abgeschlossen werden? Die Antwort ist: Nicht das System erledigt die Arbeit, sondern Sie selbst. Bei einem natürlichen Join wählen Sie nur eindeutige Spalten aus. Dies geschieht normalerweise durch die Verwendung eines Platzhalters ( 4. Externe VerbindungenViele Verknüpfungen verknüpfen Zeilen einer Tabelle mit Zeilen einer anderen Tabelle. Manchmal müssen Sie jedoch Zeilen einschließen, die keine zugehörigen Zeilen haben. Beispielsweise möchten Sie einen Join möglicherweise für Folgendes verwenden: Beispiel: Zählen Sie, wie viele Bestellungen jeder Kunde aufgegeben hat, einschließlich derjenigen, die noch keine Bestellung aufgegeben haben; SELECT Kunden.Kunden-ID,Bestellnummer von Kunden LEFT OUTER JOIN Bestellungen auf Kunden.cust_id = orders.cust_id Diese Verwenden eines Join mit einer Aggregatfunktion: So rufen Sie alle Kunden und die Anzahl der von jedem Kunden aufgegebenen Bestellungen ab: Wählen Sie Kunden.Kunden-ID, ANZAHL(Bestellnummer) als Nummer aus. von Kunden LEFT OUTER JOIN Bestellungen auf Kunden.cust_id = orders.cust_id GRUPPE NACH Kunden-ID
Dies ist das Ende dieses Artikels über MySQL-Unterabfragen und Join-Tabellen. Weitere relevante MySQL-Unterabfragen und Join-Tabellen finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: So implementieren Sie die Größenanpassung mobiler Webseiten
>>: So stellen Sie versehentlich von rm gelöschte Dateien in einer Linux-Umgebung wieder her
Inhaltsverzeichnis Vorwort 1. Was ist 2. So verwe...
Vorwort Kürzlich stieß ich in einem Projekt auf e...
Dieser CSS-Reset basiert auf dem CSS-Reset von Eri...
Zugehörige Dokumente Ein Teil dieses Artikels wir...
Inhaltsverzeichnis 1. Lösung 2. Lassen Sie den Br...
Vorwort Dieser Artikel stellt hauptsächlich die r...
1. Einleitung Wenn die Datenmenge in der Datenban...
Auf dem heimischen Markt besteht noch immer ein g...
Die offizielle Website von Netease Kanyouxi (http...
Vorwort Der optionale Verkettungsoperator (?.) er...
Vorwort: Das Jahr neigt sich dem Ende zu. Ist es ...
1. Alipay-Methode: Alipay-Methode: Klicken Sie zu...
MySQL-Gruppensortierung, um die obersten N zu fin...
Centos7-Switch-Boot-Kernel Hinweis: Bei Bedarf wi...
Vorwort Dieses Steuerelement weist beim direkten ...