我正在构建一个基于 mysql 的聊天应用程序。
我的数据库架构有以下表格,
Users Messages
================= =================
id id
screen_name message
from
to
timestamp
消息表上的 from 和 to 字段包含发送和接收每条消息的用户的 ID。
我正在尝试显示用户 ($id) 和他们的一位朋友 ($friend) 之间的所有消息。我的查询如下:
$query = "SELECT messages.* , users.screen_name FROM users CROSS JOIN messages ";
$query .= "ON ( messages.to = $id AND messages.from = $friend ) ";
$query .= "OR ( messages.to = $friend AND messages.from = $id )";
问题是每条消息在结果表中都有两次。
我尝试使用 DISTINCT,但在这种情况下它要么不起作用,要么我用错了。
为了让两个用户之间的每条消息只有一次,我的查询应该是什么?