gpt4 book ai didi

mysql - 从所有发件人中仅提取 1 条消息

转载 作者:太空宇宙 更新时间:2023-11-03 12:31:05 25 4
gpt4 key购买 nike

我正在构建一个消息传递系统,并且只需要提取每个发件人发送给指定收件人的最后一条消息。因此,如果 3 个人每人向收件人发送了 5 条消息(总共 15 条消息),我需要获得 3 个条目;每个发件人的最后一条消息。

这是我当前的 SQL:

SELECT  
messages.*,
user_accounts.uacc_id,
user_accounts.uacc_username,
user_profiles.upro_image_name
FROM messages
LEFT JOIN user_accounts
ON messages.msg_from_uacc_fk = user_accounts.uacc_id
LEFT JOIN user_profiles
ON user_profiles.upro_uacc_fk = user_accounts.uacc_id
WHERE
messages.msg_to_uacc_fk = ?
ORDER BY
msg_id
DESC

我尝试在 SELECT 中添加“MAX(1)”,在 DESC 之后添加“LIMIT = 1”,但是,当然,这总共只返回了 1 条消息。

最佳答案

有时很难猜测表格是如何设计的,但下面的查询使用子查询来获取每个用户的最新消息。

SELECT  a.*, 
c.uacc_id,
c.uacc_username,
d.upro_image_name
FROM messages a
INNER JOIN
(
SELECT msg_from_uacc_fk, MAX(msg_id) max_id
FROM messages
GROUP BY msg_from_uacc_fk
) b ON a.msg_from_uacc_fk = b.msg_from_uacc_fk AND
a.msg_id = b.max_id
INNER JOIN user_accounts c
ON a.msg_from_uacc_fk = c.uacc_id
INNER JOIN user_profiles d
ON d.upro_uacc_fk = c.uacc_id
WHERE a.msg_to_uacc_fk = ?

如果这不能解决问题,请在您的问题中添加示例记录:)

关于mysql - 从所有发件人中仅提取 1 条消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15330858/

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