【发布时间】:2012-06-25 18:28:00
【问题描述】:
我有一个消息系统(非常基本),它有一个这样的表:
**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
希望这对下一个人有帮助!
【问题讨论】:
标签: mysql nested-queries