Beim Umgang mit mehreren Tabellen kann es vorkommen, dass mehrere Spalten ausgewählt werden müssen eine Unterabfrage. Einfache Verknüpfungen führen jedoch möglicherweise nicht zum gewünschten Ergebnis, wenn in der Untertabelle Datensätze fehlen.
Der Schlüssel zur Lösung dieses Problems liegt im Verständnis, dass Tabellen von beiden physischen Tabellen abgeleitet werden können und Unterabfragen. Durch die Nutzung dieses Konzepts wird es möglich, mehrere Spalten aus einer einzelnen Unterabfrage abzurufen.
Betrachten Sie das folgende Beispiel:
SELECT a.attr, b.id, b.trans, b.lang FROM attribute a JOIN ( SELECT at.id AS id, at.translation AS trans, at.language AS lang, a.attribute FROM attributeTranslation at ) b ON (a.id = b.attribute AND b.lang = 1)
In diesem Beispiel generiert die Unterabfrage eine virtuelle Tabelle b, die enthält die gewünschten Spalten. Indem wir diese virtuelle Tabelle mit der Haupttabelle a verbinden, können wir alle erforderlichen Daten in einer einzigen Abfrage abrufen.
Diese Technik kann weiter erweitert werden, um Zusammenfassungs- oder Gruppierungstabellen einzubeziehen . Die folgende Abfrage generiert beispielsweise eine virtuelle Tabelle c mit der Anzahl der Übersetzungen für jedes Attribut:
SELECT a.attr, b.id, b.trans, b.lang, c.langcount FROM attribute a JOIN ( SELECT at.id AS id, at.translation AS trans, at.language AS lang, at.attribute FROM attributeTranslation at ) b ON (a.id = b.attribute AND b.lang = 1) JOIN ( SELECT count(*) AS langcount, at.attribute FROM attributeTranslation at GROUP BY at.attribute ) c ON (a.id = c.attribute)
Diese Abfrage gibt die gewünschten Spalten zusammen mit der Anzahl der Übersetzungen für jedes Attribut zurück.
Obwohl diese Technik Flexibilität bietet, sollte die Leistung berücksichtigt werden. MySQL-Optimierer sind in der Lage, ähnliche Unterabfragen zusammenzuführen. Es wird jedoch empfohlen, eine übermäßige Verwendung von Unterabfragen zu vermeiden und Abfragen auf Effizienz zu optimieren. Das Zusammenführen mehrerer Tabellen kann in manchen Szenarien eine effizientere Option sein.
Das obige ist der detaillierte Inhalt vonWie wähle ich in MySQL mehrere Spalten aus einer einzelnen Unterabfrage aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!