Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何删除使用array_agg postgres函数生成的重复项_Sql_Postgresql_Select_Array Agg - Fatal编程技术网

Sql 如何删除使用array_agg postgres函数生成的重复项

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

有人知道如何重写下面的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
可执行查询可在上使用。
单击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)使我不必编写自己的聚合函数!