有没有人知道如何重写以下SQL查询来生成结果,那只包含一次名称? (按用户分组的结果)。
查询
SELECT array_to_string(array_agg(CONCAT(u.firstname, ' ', u.lastname)), ', ')
FROM log_has_item logitem
INNER JOIN log log ON log.id = logitem.log_id
INNER JOIN worker u ON log.worker_id = u.id
WHERE logitem.company_id = 1
可执行查询可在 sqlfiddle.com 上查看。 单击Run SQL按钮,结果将包含 Frantisek Smith 两次
答案 0 :(得分:51)
您可以使用distinct
内的array_agg
关键字:
SELECT ARRAY_TO_STRING(ARRAY_AGG(DISTINCT CONCAT(u.firstname, ' ', u.lastname)), ', ')
FROM log_has_item logitem
INNER JOIN log log ON log.id = logitem.log_id
INNER JOIN worker u ON log.worker_id = u.id
WHERE logitem.company_id = 1