gpt4 book ai didi

php - 无法根据时间戳从一组消息中获取最后一条消息,其中名称作为查询字符串传递

转载 作者:搜寻专家 更新时间:2023-10-30 23:43:28 24 4
gpt4 key购买 nike

我有一个如下的消息表

enter image description here

和下面的用户表

enter image description here

如果我在搜索框中输入 A,它应该根据时间戳输出所有以 A 开头的名称和最后一条消息。

例如:我用 5 登录,所以它必须给出结果

Ramesh first message 2015-07-23 10:16:34
Ashish first message 2015-07-25 10:16:34

SELECT * FROM (SELECT m.*, @rn := IF(u.id = @prevUserId, @rn+1, 1) rn,@prevUserId := u.id FROM login u JOIN message m ON u.id IN (m.sender_id,m.receiver_id) WHERE u.name LIKE '%Abhishek%' ORDER BY u.id, timestamp desc) t1 WHERE rn = 1

最佳答案

如果我理解得很好,您需要一个返回所有以“a”开头的用户并与登录用户进行对话的查询。我为你写了这个查询:

SELECT 

users_sender.`name` sender,
m.message,
m.`timestamp`

FROM `messages` m

LEFT JOIN `users` users_sender
ON users_sender.id = m.sender_id
LEFT JOIN `users` users_receiver
ON users_receiver.id = m.receiver_id

WHERE (users_sender.`name` LIKE "a%"
OR users_receiver.`name` LIKE "a%")

AND (users_sender.id = 5
OR users_receiver.id = 5)

ORDER BY m.`timestamp` DESC

它给出了一个结果:

Ashish 第一条消息 2015-07-25 10:16:34

Ramesh 第一条消息 2015-07-22 10:16:34

Ramesh 第一条消息 2015-07-23 10:16:34

根据你的问题,你需要每个对话都有用户 5 在其参与者中,所以示例结果是错误的,因为它给你 2 行,但根据你的示例数据库,它需要返回 3 行,作为我的查询.

请不要使用不必要的子选择。如您所见,您可以使用联接解决此问题。如果您有任何问题,请发表评论。

关于php - 无法根据时间戳从一组消息中获取最后一条消息,其中名称作为查询字符串传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32163250/

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