gpt4 book ai didi

sql - 根据日期连接表

转载 作者:行者123 更新时间:2023-11-29 14:13:12 24 4
gpt4 key购买 nike

我有两个表:

表A

ID | name
---+----------
1 | example
2 | example2

表B(创建字段为timestamptz)

ID | id_table_a | dek  | created
---+------------+------+---------------------
1 | 1 | deka | 2019-10-21 10:00:00
2 | 2 | dekb | 2019-10-21 11:00:00
3 | 1 | dekc | 2019-10-21 09:00:00
4 | 2 | dekd | 2019-10-21 09:40:00
5 | 1 | deke | 2019-10-21 09:21:00

我需要从 Table A 中获取记录,并且每条记录都应该有来自 table b 的最后一个 dek 基于 created.

我该怎么做?

最佳答案

我会使用横向连接,通常这比使用 select max()

更快
select a.*, b.dek
from table_a a
join lateral (
select id, id_table_a, dek, created
from table_b
where b.id_table_a = a.id
order by created desc
limit 1
) tb on true;

另一种选择是使用distinct on:

select a.*, b.dek
from table_a a
join lateral (
select distinct on (id_table_a) id, id_table_a, dek, created
from table_b
order by id_table_a, created desc
) tb on tb.id_table_a = a.id;

这取决于你的数据分布,哪个更快。

关于sql - 根据日期连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58482924/

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