我正在寻找一种方法,通过查询连接组内字段的字符串。例如,我有一个表格:
ID COMPANY_ID EMPLOYEE
1 1 Anna
2 1 Bill
3 2 Carol
4 2 Dave
我想通过company_id进行分组,以获得如下内容:
COMPANY_ID EMPLOYEE
1 Anna, Bill
2 Carol, Dave
mySQL中有一个内置函数来执行这个group_concat
如前所述,创建自己的聚合函数是正确的做法。下面是我的拼接聚合函数(你可以在法语中找到详细信息):
CREATE OR REPLACE FUNCTION concat2(text, text) RETURNS text AS '
SELECT CASE WHEN $1 IS NULL OR $1 = \'\' THEN $2
WHEN $2 IS NULL OR $2 = \'\' THEN $1
ELSE $1 || \' / \' || $2
END;
'
LANGUAGE SQL;
CREATE AGGREGATE concatenate (
sfunc = concat2,
basetype = text,
stype = text,
initcond = ''
);
然后把它用作:
SELECT company_id, concatenate(employee) AS employees FROM ...