Php 获取pm消息的最大结果
我试图得到两个用户之间的每一次对话的最后结果,而不占上风。我在网上看过一些例子,比如 [ 还有一个更高级的查询 [ 下面是我的数据库结构。 我的对话依赖于获取Php 获取pm消息的最大结果,php,max,Php,Max,我试图得到两个用户之间的每一次对话的最后结果,而不占上风。我在网上看过一些例子,比如 [ 还有一个更高级的查询 [ 下面是我的数据库结构。 我的对话依赖于获取message\u creator和message\u target的id将它们链接到一个聊天中 message_id, message_content, message_target, message_creator, message_status, message_time 我需要message\u status在查询中也选择1和2
message\u creator
和message\u target
的id将它们链接到一个聊天中
message_id,
message_content,
message_target,
message_creator,
message_status,
message_time
我需要message\u status
在查询中也选择1和2,这样,如果用户已经阅读了最后一条消息,它仍然显示为对话中的最后一条消息
这是我目前的查询
$callmessage=" SELECT message_id,MAX(message_content) AS message_content ,message_target,message_status,message_creator,message_throughurl,MAX(message_time) AS message_time FROM messages WHERE message_target='$user1_id' OR message_creator='$user1_id' AND message_status=1 OR message_status=2
Group By
(if(message_creator > message_target, message_creator,message_target))
,(if(message_creator > message_target, message_target,message_creator))
ORDER BY message_id DESC";
如果您想获取两个用户之间的最后一条消息,那么这应该可以:
SELECT *
FROM messages
WHERE (
(message_creator='$user1_id' AND message_target='$user2_id')
OR
(message_creator='$user2_id' AND message_target='$user1_id')
)
AND message_status IN (1,2)
ORDER BY message_id DESC
LIMIT 1
好的。我已经计算出来了,它也可以工作了。这就是我对我的查询所做的,只需要添加一些小的内容
$user1_id= mysqli_real_escape_string($mysqli,$_SESSION['id']);
$callmessage=" SELECT * FROM messages WHERE message_id IN
(SELECT MAX(message_id) AS message_id FROM
(SELECT message_id, message_creator AS id_with
FROM messages
WHERE message_target = '$user1_id'
UNION ALL
SELECT message_id, message_target AS id_with
FROM messages
WHERE message_creator= '$user1_id') t
GROUP BY id_with)";
我没有使用user2\u id。另外,您已将组按消息删除,这是我的问题的根源。我需要获取每个组的最后一个消息\u id