MySQL Ergebnisse als durch Kommas getrennte Liste

Ich muss eine Abfrage ausführen wie:

SELECT p.id, p.name, (SELECT name FROM sites s WHERE s.id = p.site_id) AS site_list FROM publications p 

Aber ich möchte, dass die Unterauswahl eine durch Kommas getrennte Liste anstelle einer Datenspalte zurückgibt. Ist das überhaupt möglich, und wenn ja, wie?

Sie können GROUP_CONCAT verwenden , um das auszuführen, zB so etwas wie

 SELECT p.id, p.name, GROUP_CONCAT(s.name) AS site_list FROM sites s INNER JOIN publications p ON(s.id = p.site_id) GROUP BY p.id, p.name; 

Anstatt group concat() , können Sie nur concat()

 Select concat(Col1, ',', Col2) as Foo_Bar from Table1; 

bearbeiten das funktioniert nur in mySQL; Oracle Concat akzeptiert nur zwei Argumente. In oracle können Sie etwas wie select col1 || ‘,’ || col2 || ‘,’ || col3 als foobar aus table1; in SQL-Server würden Sie + anstelle von Pipes verwenden.

In meinem Fall muss ich alle Kontonummern einer Person verketten, deren Handynummer eindeutig ist. Also habe ich die folgende Abfrage verwendet, um das zu erreichen.

 SELECT GROUP_CONCAT(AccountsNo) as Accounts FROM `tblaccounts` GROUP BY MobileNumber 

Abfrageergebnis ist unten:

 Accounts 93348001,97530801,93348001,97530801 89663501 62630701 6227895144840002 60070021 60070020 60070019 60070018 60070017 60070016 60070015