Sql 如何删除使用array_agg postgres函数生成的重复项
有人知道如何重写下面的SQL查询以生成只包含一个名称的结果吗?(结果按用户分组) 查询Sql 如何删除使用array_agg postgres函数生成的重复项,sql,postgresql,select,array-agg,Sql,Postgresql,Select,Array Agg,有人知道如何重写下面的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 lo
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
可执行查询可在上使用。
单击RunSQL按钮,您将得到两次包含Frantisek Smith的结果您可以在
数组中使用distinct
关键字
:
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
array\u agg(distinct concat(…))
在Postgre9.0+中有string\u agg(text,text)
函数。写string_agg(CONCAT(…),',',')可能更容易@a_horse_和_no_name distinct可以很好地工作,但会扰乱顺序。有什么办法保存它吗?@Rodrigo:在string_agg()
@a_horse_with_no_name我试过string_agg(按l.id,,,,,,,)和string_agg(按nome,,,,,,,,,,,,,,,,但两者都给出“函数字符串_agg(字符变化)不存在”。我将用完整的sql向您提出一个问题。有没有办法使用distinct保留顺序?错误:distinct未为窗口函数实现sql状态:0A000(PostgreSQL 9.5.5)使我不必编写自己的聚合函数!