Heim >Datenbank >MySQL-Tutorial >Wie kann ich mithilfe von GROUP_CONCAT Werte aus mehreren Zeilen in SQLite effizient zu einer einzigen Zeichenfolge verketten?
GROUP_CONCAT in SQLite verstehen
Beim Umgang mit relationalen Datenbankschemata ist es oft notwendig, Werte aus mehreren Zeilen einer Tabelle zu einer einzigen zu verketten Zeichenfolge. In SQLite bietet die Funktion GROUP_CONCAT eine leistungsstarke Lösung für diese Aufgabe.
Ihre Daten und Ziel
Betrachten Sie die folgenden Beispieldaten, die mit Abstracts verknüpfte Autoren darstellen:
1 A 1 B 1 C 1 D 2 E 2 F 3 G 3 H 3 I 3 J 3 K
Sie möchten diese Daten in ein Format umwandeln, in dem jede eindeutige Abstract-ID (_id) mit einer durch Kommas getrennten Liste der entsprechenden Autorennamen verknüpft ist, etwa so:
1 A,B,C,D 2 E,F
Verwendung von GROUP_CONCAT mit Aggregatfunktionen
Die Funktion GROUP_CONCAT kann in Kombination mit Aggregatfunktionen und einer GROUP BY-Klausel dieses Ziel erreichen. Ein gängiger Ansatz besteht darin, eine Zwischentabelle mithilfe einer Unterabfrage zu erstellen, wie Sie es ursprünglich versucht haben. Sie haben jedoch einen entscheidenden Schritt verpasst.
Der richtige Ansatz
Um GROUP_CONCAT korrekt zu verwenden, führen Sie die folgenden Schritte aus:
Korrigierte Abfrage
Hier ist eine korrigierte Abfrage, die diesen Prinzipien folgt:
SELECT ABSTRACTS_ITEM._id, GROUP_CONCAT(ABSTRACT_AUTHOR.NAME) AS GroupedName FROM ABSTRACTS_ITEM JOIN AUTHORS_ABSTRACT ON ABSTRACTS_ITEM._id = AUTHORS_ABSTRACT.ABSTRACTSITEM_ID JOIN ABSTRACT_AUTHOR ON ABSTRACT_AUTHOR._id = AUTHORS_ABSTRACT.ABSTRACTAUTHOR_ID GROUP BY ABSTRACTS_ITEM._id;
Alternative Abfrage
Alternativ können Sie den Unterabfrageansatz wie ursprünglich versucht verwenden, jedoch mit der richtigen Syntax:
SELECT ID, GROUP_CONCAT(NAME) FROM (select ABSTRACTS_ITEM._id AS ID, Name from ABSTRACTS_ITEM , ABSTRACT_AUTHOR , AUTHORS_ABSTRACT where ABSTRACTS_ITEM._id = AUTHORS_ABSTRACT.ABSTRACTSITEM_ID and ABSTRACT_AUTHOR._id = AUTHORS_ABSTRACT.ABSTRACTAUTHOR_ID) GROUP BY ID;
Beide Abfragen verketten erfolgreich die Autorennamen für jede Abstract-ID , Bereitstellung des gewünschten Ausgabeformats.
Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von GROUP_CONCAT Werte aus mehreren Zeilen in SQLite effizient zu einer einzigen Zeichenfolge verketten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!