2016-03-22 10 views
0

Ich möchte alle eindeutigen IDs für bestimmte Zeilen mit dem gleichen Benutzernamen ziehen und dann jedes Ergebnis als eine Zeile anzeigen.In MySQL Wie wähle ich alle IDs aus Zeilen mit einem ähnlichen Wert

Zum Beispiel ...

Hier ist meine Tabelle:

+----+------+ 
| id | name | 
+----+------+ 
| 1 | Joe | 
| 2 | Amy | 
| 3 | Joe | 
| 4 | Amy | 
| 5 | Joe | 
| 6 | Amy | 
+----+------+ 

Hier ist das Ergebnis, das ich will:

+------+-------+ 
| name | ids | 
+------+-------+ 
| Joe | 1,3,5 | 
| Amy | 2,4,6 | 
+------+-------+ 

Wie kann ich dieses Ergebnis in MySQL ziehen?

+0

könnte in der Lage sein, etwas zu tun, wie http://stackoverflow.com/questions/19558443/comma-separated-string-of-selected- values-in-mysql und enthalten eine Möglichkeit, eine Gruppe nach Namen zu tun? –

+1

Mögliches Duplikat von [Nach einer Spalte gruppieren und Alle Ergebnisse aus einer anderen Spalte anzeigen] (http://stackoverflow.com/questions/17716854/group-by-one-column-and-show-all-results-from-another- Spalte) –

Antwort

1

ein GROUP_CONCAT() mit DISTINCT Klausel verwenden, um eindeutige IDs für einen bestimmten Namen zu aggregieren:

SELECT name, GROUP_CONCAT(DISTINCT id SEPARATOR ',') AS ids 
FROM yourtable 
GROUP BY name 

Um die Verwendung von überprüft es auch sehen MySQL group_concat with select inside select.

+0

Das ist perfekt. Vielen Dank. –

0

können Sie group_concat dafür verwenden:

SELECT name, GROUP_CONCAT(id) AS ids 
FROM  table 
GROUP BY name 

Sie können auch einen Separator, aber das eines ist standardmäßig das Komma angeben.

Sie können auch DISTINCT angeben, aber da ID ist einzigartig, gibt es keinen Grund zu diesem: alles, was es tun wird, ist die Abfrage verlangsamen.

Hier ist SQL fiddle das Ausgangssignal zu erzeugen, wie gewünscht:

+------+-------+ 
| name | ids | 
+------+-------+ 
| Joe | 1,3,5 | 
| Amy | 2,4,6 | 
+------+-------+ 
0

Dies ist ein, was der group_concat Betreiber ist für:

SELECT name, GROUP_CONCAT(id) AS ids 
FROM  mytable 
GROUP BY name 
Verwandte Themen