我正在开发一个使用MySQL的即时通讯系统。 当前的表结构如下所示:
id
from_user_id (FK)
to_user_id (FK)
text
date
new
但我遇到了一些问题。
首先,我这样做:
SELECT * FROM table WHERE to_user_id = (my_id) ORDER BY date desc GROUP BY from_user_id
这将返回向我发送消息的所有用户。
其次,我将他们的ID保存到一个数组中。
第三,我这样做:
SELECT * FROM table WHERE from_user_id = (my_id) AND to_user_id NOT IN (array_of_ids) ORDER BY date desc GROUP BY to_user_id
这将返回我已发送消息但尚未发送消息的所有用户。
这很有效。
用户发送的每条消息都将字段“new”设置为true。这是因为我想通知其他用户(消息的接收者)他收到了新消息。
问题是它也会向发件人显示为新邮件。
有关如何修复或将这两个SQL更改为大的SQL的任何想法?