gpt4 book ai didi

sql - Postgresql:STRING_AGG() 按未显示值排序的最佳方式

转载 作者:行者123 更新时间:2023-11-29 13:09:05 30 4
gpt4 key购买 nike

我正在尝试按照他们登录的顺序生成一串名称。我有可用的代码,但它很丑陋,我确信我错过了一个更直接的方法。

目标,按照上次登录的顺序返回一串不同的用户名。

  1. 我先列出姓名和日期。
  2. 我为每个名字选择了最近的一行。 ()吨
  3. 我按日期订购。 () 小号
  4. 我 STRING_AGG 给我想要的字符串。

PgSql 9.6

我可以消除任何这些嵌套查询吗?

SELECT
STRING_AGG(s.name, ', ') AS names
FROM
(SELECT
t.name
FROM
(SELECT DISTINCT ON (t2.name)
t2.name
,t1.created
FROM
logins t1
LEFT JOIN
users t2 ON t2.id = t1.user_id
ORDER BY t2.name, t1.created DESC
) t
ORDER BY t.created DESC
) s

最佳答案

你试过这个吗?

SELECT STRING_AGG(s.name, ', ' ORDER BY created DESC) AS names
FROM (SELECT u.name, MAX(l.created) as created
FROM logins l JOIN
users u
ON u.id = l.user_id
GROUP BY u.name
) ul;

LEFT JOIN 似乎没有必要。 logins 中的用户 ID 应该有效。如果不是,请使用 LEFT JOIN

关于sql - Postgresql:STRING_AGG() 按未显示值排序的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57153545/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com