sql - 选择时间戳单元格上的最新条目
问题描述
我有这两张表:
User:
=======================
id | Name | Email
=======================
1 | User-A| a@mail
2 | User-B| b@mail
=======================
Entry:
=================================================
id | agree | createdOn | userId
=================================================
1 | true | 2020-11-10 19:22:23 | 1
2 | false | 2020-11-10 22:22:23 | 1
3 | true | 2020-11-11 12:22:23 | 1
4 | true | 2020-11-04 22:22:23 | 2
5 | false | 2020-11-12 02:22:23 | 2
================================================
我需要得到以下结果:
=============================================================
Name | Email | agree | createdOn
=============================================================
User-A | a@mail | true | 2020-11-11 22:22:23
User-B | b@mail | false | 2020-11-12 02:22:23
=============================================================
我正在运行的 Postgres 查询是:
select distinct on (e."createdOn", u.id)
u.id , e.id ,u."Name" , u.email, e.agree, e."createdOn" from "user" u
inner join public.entry e on u."id" = e."userId"
order by "createdOn" desc
但问题是它在加入后返回所有条目!我只想要单元格的最新条目createdOn
。
解决方案
您需要每个用户的最新条目。为此,您需要distinct on
子句中的用户 ID,而不需要其他列。这保证了每个用户在结果集中有一行。
然后,您需要将该列首先放在order by
子句中,然后是createdOn desc
. 这打破了联系并决定将在每个组中保留哪一行:
select distinct on (u.id) u.id , e.id ,u."Name" , u.email, e.agree, e."createdOn"
from "user" u
inner join public.entry e on u."id" = e."userId"
order by u.id, "createdOn" desc
推荐阅读
- powershell - 在 PowerShell 中加入数组,类似于连接 DataFrame 列
- .net - 如何让 RequestCachePolicy 尊重 max-age
- sparql - 在 SPARQL 查询中返回同一列下的值
- python - 索引超出范围的python
- image-processing - PNG 输出 alpha 通道但没有 RGB 和 JPG 输出 RGB 但没有 alpha
- c# - 如何解决使用 EF 6 记录互操作引发的异常的问题
- c# - 使用 SQLite 删除的 Entity Framework Core ExecuteSqlCommand 不起作用
- ssl - 在 lighttpd 上配置 https
- azure-cosmosdb - 在 azure cosmosdb graph.Possible WorkArounds 中使用 gremlin 限制重复()步骤仅使用 32 个循环
- bash - 字符串溢出 Shell 脚本