1

我有一个消息系统(非常基本),它有一个像这样的表:

**MESSAGE_ID**  **RUSER_ID**    **SUSER_ID**    **MESSAGE_DATA**    **DATE**

RUSER是接收用户,SUSER是发送用户。如果我想输出一个会输出某些用户消息的查询,我目前会这样做:

从 PRIVATE_MESG 中选择 *,其中 RUSER_ID=$USER_ID 或 SUSER_ID=$USER_ID

这会给我与该 USER_ID 关联的所有 message_id。我想要的是创建一个仅生成与RUSER_ID关联的ID或与特定用户关联的SUSER_ID的列。我需要它来选择RUSER_ID 或 SUSER_ID等于USER_ID但只显示不是USER_ID的消息

然后,我想通过该查询的输出进行分组。

任何帮助是极大的赞赏!

谢谢!

更新我并不是真的在寻找 message_id,我只是在寻找该人写信或收到的用户列表。

更新 大家都知道,我完美地收到了这个问题的答案!我稍后对其进行了调整,以便它也可以按日期从最新到最旧显示它们。我通过使用 DATE() 和 TIME() 函数将 DATETIME 拆分为 DATE 和 TIME 来做到这一点。这是我的最后一个查询:

    SELECT
    IF(RUSER_ID = $USER, SUSER_ID, RUSER_ID) as THE_OTHER_GUY, DATE(DATE) as DAY, TIME(DATE) as TIME
    FROM PRIVATE_MESG
    WHERE RUSER_ID = $USER
OR SUSER_ID = $USER;
group by THE_OTHER_GUY ORDER BY DAY DESC, TIME DESC

希望这可以帮助下一个人!

4

2 回答 2

1

您可以查询:

SELECT
    *,
    IF(RUSER_ID = $USER_ID, SUSER_ID, RUSER_ID) as THE_OTHER_GUY
FROM PRIVATE_MESG
WHERE RUSER_ID = $USER_ID
    OR SUSER_ID = $USER_ID;
于 2012-06-25T18:41:13.423 回答
0
SELECT SUSER_ID FROM PRIVATE_MESG WHERE RUSER_ID=$USER_ID
UNION
SELECT RUSER_ID FROM PRIVATE_MESG WHERE SUSER_ID=$USER_ID

它检索:
- 向 $USER_ID 发送消息
的用户 ID 列表 - 从 $USER_ID 接收消息的用户 ID 列表

UNION 将 2 个列表分组到一个结果集中。

于 2012-06-25T18:30:29.190 回答