我想写一份报告来显示用户之间发送的消息。
我只展示了最后200位用户,但我真的很难找到一种方法来做到这一点,而不会向数据库发送无限的选择。
以下是我的基本选择。它显示了从一个用户到另一个用户然后相反的消息计数。
SELECT COUNT(pid) FROM msg WHERE sender_userid="3512" AND receiver_userid="3585";
SELECT COUNT(pid) FROM msg WHERE sender_userid="3585" AND receiver_userid="3512";
这是另一个:
SELECT COUNT(pid) FROM msg WHERE sender_userid="3514" AND receiver_userid="3589";
SELECT COUNT(pid) FROM msg WHERE sender_userid="3589" AND receiver_userid="3514";
如果我有大约200个用户(如果需要,我可以在PHP中动态构建MySQL语句)有没有办法在一个查询中进行这种查询?
然后我看了一个UNION ALL
SELECT COUNT(pid),sender_userid,receiver_userid FROM msg WHERE sender_userid="3512" AND receiver_userid="3585"
UNION ALL
SELECT COUNT(pid),sender_userid,receiver_userid FROM msg WHERE sender_userid="3585" AND receiver_userid="3512"
UNION ALL
SELECT COUNT(pid),sender_userid,receiver_userid FROM msg WHERE sender_userid="2953" AND receiver_userid="0473"
UNION ALL
SELECT COUNT(pid),sender_userid,receiver_userid FROM msg WHERE sender_userid="1235" AND receiver_userid="2953";
这可以用PHP构建。
它确实提供了可以处理的结果。
这是最好的方法吗?还有更好的方法吗?
如果需要,我可以解释更多/更好。
THX