【发布时间】:2012-01-23 08:36:54
【问题描述】:
基本上我想要做的是选择一个用户之间的最新消息,他们接收或发送消息的任何人。这意味着我需要的唯一用户 ID 可能在 m_to 或 m_from 中。那么如何过滤搜索以从两个字段之一中选择唯一 ID,其中该字段不是主用户的 ID?我在这里说得通吗?
SELECT * FROM messages
WHERE m_to = '$user_id' OR m_from = '$user_id'
ORDER BY date
所以为了(尽量)清楚,我需要进行一个查询,该查询将为他们接收或发送消息的每个用户选择从主要用户接收或发送的最新消息。这样列表中就没有重复的用户。但是,由于这可能在 to 或 from 字段中,我不知道如何执行此操作。有人可以帮我看看吗?
编辑:好的,显然我不清楚。 $user_id 变量是登录用户的用户 ID。这意味着我需要来自不是 $user_id 的 m_from 或 m_to 字段的唯一消息
编辑:
如果我们正在运行此查询...
选择 用户, the_other_party, MAX(日期) AS max_date 从 ( 选择 CASE m_to WHEN 'IxjXgC' THEN m_to ELSE m_from END AS the_user, CASE m_from WHEN 'IxjXgC' THEN m_to ELSE m_from END AS the_other_party, 日期 来自消息 WHERE m_to = 'IxjXgC' 或 m_from = 'IxjXgC' ) 米 假设我们在数据库中有这些类别...
m_to m_from date
IxjXgC ShJiMr 2012-01-22 01:20:37
ShJiMr IxjXgC 2012-01-22 02:22:37
LhJiM1 IxjXgC 2012-01-22 03:23:37
然后我运行上面的查询,结果就变成了……
the_other_party date
ShJiMr 2012-01-22 03:23:37
【问题讨论】: