MySQL结果以逗号分隔列表

我需要运行一个查询,如:

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

但我希望子select返回一个逗号分隔列表,而不是一列数据。 这甚至是可能的,如果是这样,怎么样?

你可以使用GROUP_CONCAT来执行,比如类似的东西

 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; 

而不是使用group concat()你可以使用concat()

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

编辑这只适用于MySQL; Oracle concat只接受两个参数。 在oracle中,你可以使用像从表1中selectcol1 ||','|| col2 ||','|| col3作为foobar; 在SQL Server中,您将使用+而不是pipe道。

在我的情况下,我必须连接一个人的手机号码是唯一的所有帐号。 所以我用下面的查询来实现这一点。

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

查询结果如下:

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