MySQL Risultati come elenco separato da virgole

Devo eseguire una query come:

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

Ma mi piacerebbe che la sotto-selezione restituisse un elenco separato da virgole, invece di una colonna di dati. E ‘anche ansible, e se sì, come?

Puoi utilizzare GROUP_CONCAT per eseguire ciò, ad esempio qualcosa di simile

 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; 

Invece di usare group concat() puoi usare solo concat()

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

modificare questo funziona solo in MySQL; Oracle concat accetta solo due argomenti. In oracle puoi usare qualcosa come select col1 || ‘,’ || col2 || ‘,’ || col3 as foobar da table1; in SQL Server si usa + invece di pipe.

Nel mio caso devo concatenare tutto il numero di conto di una persona il cui numero di cellulare è unico. Quindi ho usato la seguente query per raggiungere questo objective.

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

Il risultato della query è qui sotto:

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