首页 > 解决方案 > MySql 查询以检索 2 个用户之间的对话

问题描述

我有一个快速的问题,我可以对此发表意见。我正在尝试编写一个 MySQL 查询,该查询从两个用户之间的对话中提取所有消息。我需要能够提取发送给 'user2'的 'user1'发送的消息,以及发送给 'user1'的 'user2' 发送的消息。

我已经涉足了一点,我目前已经获得了执行查询所需的 4 个条件(见下文)。我一直在尝试找出如何构建它以获得我需要的特定数据。

    SELECT privatemessage_message, privatemessage_time_created, privatemessage_sent_by, privatemessage_sent_to 
    FROM tbl_privatemessages 
    WHERE privatemessage_sent_by = 1 
       OR privatemessage_sent_by = 2 
       OR privatemessage_sent_to = 1
       OR privatemessage_sent_to = 2
    ORDER BY privatemessage_time_created ASC

对于上下文: 这将在 PHP MySQL 网站中使用,其中 AJAX 用于私人消息传递。我对他们很好,但是这个特殊的 SQL 查询很麻烦。

非常感谢任何帮助:)

标签: mysql

解决方案


您需要使用AND来组合发送方和接收方,并OR组合不同的方向。

SELECT privatemessage_message, privatemessage_time_created, privatemessage_sent_by, privatemessage_sent_to 
FROM tbl_privatemessages 
WHERE (privatemessage_sent_by = 1 AND privatemessage_sent_to = 2)
   OR (privatemessage_sent_to = 1 AND privatemessage_sent_by = 2)
ORDER BY privatemessage_time_created ASC

推荐阅读