我有一个查询(下面),它返回ID值和另外两个相关值(ReplacesReference)。查询返回2条记录。我想返回一条记录,所以我需要连接第一个" ReplacesReference"使用逗号','和第二个"替换参考"值。
我的查询如下
select
distinct(c.wiid) as ID,
a.reference as ReplacesReference
from npp_projects a,
npp_assoc b,
npp_projects c
where a.id = b.parent_id
and b.type = 'replace'
and c.id = b.child_id
and c.reference like '%EN 815%'
它的输出是:
ID | ReplacesReference
====================================
CEN3406 | I.S. EN 815:1996
CEN3406 | I.S. EN 815:2004
我希望能够返回以下输出:
ID | ReplacesReference
====================================
CEN3406 | I.S. EN 815:1996 , I.S. EN 815:2004
非常感谢您的帮助 - 我正在用这个撕掉我的头发!
答案 0 :(得分:0)
您必须执行以下操作:
SELECT id,GROUP_CONCAT(string SEPARATOR'')FROM TABLE GROUP BY id; http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat
答案 1 :(得分:0)
您想使用group by
代替select distinct
。您使用c.wild
周围的括号表示您不了解select distinct
的工作原理。它适用于select
列表中的所有列。括号不会影响它。查询如下所示:
select p2.wiid as ID,
group_concat(distinct p.reference separator ', ') as ReplacesReference
from npp_projects p join
npp_assoc a
on p.id = a.parent_id
npp_projects p2
on p2.id = a.child_id
where a.type = 'replace' and p2.reference like '%EN 815%'
group by p2.wild;
我所做的改变:
group_concat()
以获取所需的列表。group by
以替换select distinct
。join
语法。作为一个简单的规则:只是不要在from
子句中使用逗号。