mysql - 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 查询很麻烦。
非常感谢任何帮助:)
解决方案
您需要使用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
推荐阅读
- python - Selenium 在无头模式下无法正常工作
- google-cloud-platform - API 调用包含敏感数据时的 API 密钥
- c - 试图读取目录中的文件,目录只会导致自己并在自己中循环
- azure-devops - 迁移器验证命令的问题
- android - 将数据库中的数据与从服务器接收的数据进行映射
- spring-boot - 将spring boot项目构建到docker
- java - 如何延迟应用程序的关闭直到所有代码完成执行?
- python - PyPDF2 以类似二进制的形式打开一些 PDF 文件
- c# - 如何在 EF Core 3.1 中使用 Linq 表达式在多个表上加入
- python - 返回舍入值但仍打印整个小数点