gpt4 book ai didi

sql - SQL查询以选择所有唯一元组

转载 作者:行者123 更新时间:2023-12-03 18:42:35 27 4
gpt4 key购买 nike

我有以下数据:

data

现在,我想做的是获取所有唯一行(按created_at排序),其中source_account_id和target_account_id是唯一的,并且源或目标的最新行== 1

我已经尝试过了,但是当它基本上只返回2时,它将返回4行:

select
*
from
messages
where
source_account_id = 1 OR target_account_id = 1
group by
source_account_id,
target_account_id


我期望的结果是2行,其中message_id = 3,6。

总结一下,我真的想要account_id = 1的最新行(消息)以及他发送或接收的消息的任何人

有任何想法吗?

最佳答案

我认为您可以为所需使用相关子查询:

select m.*
from messages m
where m.created_at = (select max(m2.created_at)
from messages m2
where (m2.source_account_id = m.source_account_id and
m2.target_account_id = m.target_account_id
) or
(m2.source_account_id = m.target_account_id and
m2.target_account_id = m.source_account_id
)
) and
1 in (m.source_account_id, m.target_account_id);

关于sql - SQL查询以选择所有唯一元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54334204/

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