MySQL - 一个语句中的多个选择

时间:2014-08-11 08:14:47

标签: mysql

我想写一份报告来显示用户之间发送的消息。

我只展示了最后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

0 个答案:

没有答案