MySQL结果以逗号分隔列表

问题描述 投票:111回答:3

我需要运行如下查询:

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

但我希望子选择返回逗号分隔列表,而不是一列数据。这是否可能,如果是这样,怎么样?

sql mysql concatenation
3个回答
229
投票

您可以使用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, p.name;

8
投票

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

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

编辑它只适用于mySQL; Oracle concat只接受两个参数。在oracle中,您可以使用select col1 ||','|| col2 ||','|| col3之类的东西作为来自table1的foobar;在SQL Server中你会使用+而不是管道。


3
投票

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

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
© www.soinside.com 2019 - 2024. All rights reserved.