gpt4 book ai didi

php - 如果 from_user 已经发送了消息,如何忽略其他消息?

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

这是我的查询

"SELECT * FROM messages WHERE to_user = :user ORDER BY time ASC"

问题是它忽略 from_user 列并显示来自单个用户的多于 1 条消息,我只想显示 from_user< 列中每个用户的最后一条消息,并向用户显示 to_user 列中记录的内容如果from_user已经发送了消息,如何忽略其他消息?我只想选择最后一条消息 from_user 发送给 to_user

我尝试使用 limit,但它只选择一条用户消息,该消息位于 from_user 列中,我需要按 to_user 选择,但返回 内的所有单个用户消息>from_user

PHP 代码

//$sql = "SELECT * FROM messages WHERE to_user = :user ORDER BY time ASC";
$sql = "SELECT DISTINCT from_user, messages.* FROM messages WHERE to_user = :user ORDER BY time ASC";
$stm = $conexao_pdo->prepare($sql);
$stm->bindParam(':user', $user_logged);
$stm->execute();

这是我的表 messages 中的列 enter image description here

最佳答案

据我了解这个问题,我相信您必须使用 GROUP BY 运算符,解决方案应如下所示:

SELECT Max(time), messages.* FROM messages WHERE to_user = :user
Group BY from_user
ORDER BY time ASC

(您的示例数据应包含一些相关内容)

编辑:不要在 SELECT 中混合聚合值和非聚合值,请参阅下面的评论。

   SELECT 
messages.*
FROM
messages
JOIN
(SELECT
from_user, MAX(time) MAX_TIME
FROM
messages
WHERE
to_user = :user
GROUP BY
from_user) MAX_QUERY
ON messages.from_user = MAX_QUERY.from_user
AND messages.time = MAX_QUERY.MAX_TIME
WHERE
to_user = :user;

关于php - 如果 from_user 已经发送了消息,如何忽略其他消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57332232/

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