我有一个消息系统(非常基本),它有一个这样的表:
**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 或 SUSER_ID 相关联的 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
希望这有助于下一个人!
答案 0 :(得分: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;
答案 1 :(得分: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
UNION将2个列表分组到一个结果集中。