Pet*_*vic 38 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 logitem.company_id = 1
Run Code Online (Sandbox Code Playgroud)
可执行查询可在sqlfiddle.com上获得.单击Run SQL按钮,结果将包含两次Frantisek Smith
Mur*_*nik 64
您可以在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
Run Code Online (Sandbox Code Playgroud)
ARRAY_TO_STRING(ARRAY_AGG(
当一个简单的STRING_AGG
操作如下时,无需在房子周围走来走去(代码可在此处的小提琴上找到):
--
-- Simplified
--
SELECT
DISTINCT
STRING_AGG
(
DISTINCT CONCAT(w.firstname, ' ', w.lastname), ', '
) AS "The workers"
FROM log_item li
INNER JOIN log l ON li.log_id = l.id
INNER JOIN worker w ON l.worker_id = w.id
WHERE li.company_id = 1;
Run Code Online (Sandbox Code Playgroud)
结果:
The workers
Frantisek Smith, Peter Duff
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
25722 次 |
最近记录: |