Ich möchte eine Liste der Benutzer aus einer Datenbank zurückgeben. Es gibt Hunderte von Benutzern in der Datenbank. Jeder Benutzer hat seine eigene eindeutige Benutzer-ID. Alle Werte, die ich zurückgeben möchte, befinden sich in derselben Spalte (meta_value).
Die Datenbankstruktur ist wie folgt:
id | user_id | meta_key | meta_value
Beispieldaten sind wie folgt:
1 | 3434 | Vorname | Brandon 2 | 3434 | Nachname | Johnson 3 | 3434 | street_add | 123 main 4 | 3434 | Stadt | Strand 5 | 3434 | Zustand | Texas
Ich versuche, den Vor- und Nachnamen, street_add, city und state in einer SQL-Anweisung zurückzugeben.
Ich möchte, dass die Ausgabe wie folgt aussieht:
Brandon, Johnson, 123 Main, Ocean Beach, Texas
SELECT user_id,GROUP_CONCAT(meta_value ORDER BY id) FROM t GROUP BY user_id
SELECT user_id,GROUP_CONCAT(meta_value ORDER BY id) FROM t WHERE meta_key IN('first_name','last_name',etc) GROUP BY user_id
Antworten:
Verwenden Sie einfach GROUP_CONCAT mit einer WHERE-Bedingung
quelle