gpt4 book ai didi

php - 如何从消息表中与每个其他用户的所有对话中获取最后一条消息?

转载 作者:行者123 更新时间:2023-11-30 22:06:20 26 4
gpt4 key购买 nike

我正在使用 laravel 框架 5.3。执行查询后我得到了错误的结果。我有两个表,一个是用户,另一个是消息。这是我的场景

enter code here
User table-

id name
1 a
2 b
3 c


Message table:
id sender_id receiver_id message
1 1 2 hii
2 2 1 hello
3 1 3 hiiii

现在我想获取具有 sender_id 和 receiver_id 的用户之间的最后一条消息这是我的代码:-

enter code here
$coreQueryUser=DB::select(
'
select m.* ,u.*
from
messages m
inner join (
select max(id) as maxid
from messages
where messages.sender_id = 1 // here i am sending userid is 1
group By (if(sender_id > receiver_id, sender_id, receiver_id)),
(if(sender_id > receiver_id, receiver_id, sender_id))
) t1 on m.id=t1.maxid
join
users u ON u.id = (CASE WHEN m.sender_id = 1
THEN m.sender_id
ELSE m.receiver_id
END)
'
);

注意 - 我想找到所有最后一 strip 有 userid (1) 的消息提前致谢:)

最佳答案

使用 ORDER BY 短语并使用 LIMIT 将结果限制为 1
我的答案是假设 id 行是您的主键并且它是自动递增

编辑您的代码\

enter code here
$coreQueryUser=DB::select(
'
select m.* ,u.*
from
messages m
inner join (
select max(id) as maxid
from messages
where messages.sender_id = 1 // here i am sending userid is 1
group By (if(sender_id > receiver_id, sender_id, receiver_id)),
(if(sender_id > receiver_id, receiver_id, sender_id))
) t1 on m.id=t1.maxid
join
users u ON u.id = (CASE WHEN m.sender_id = 1
THEN m.sender_id
ELSE m.receiver_id
END)
ORDER BY m.id DESC LIMIT 1
'
);

关于php - 如何从消息表中与每个其他用户的所有对话中获取最后一条消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41610490/

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