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