|from| to |
| 7 | 9 |
| 7 | 9 |
| 3 | 9 |
| 3 | 2 |
让我们说我是用户9并且想知道有多少用户写信给我。 查询:
SELECT COUNT(*) FROM tab WHERE to = 9;
我得到3这意味着我收到了3条新消息,但是如何找出很多用户写的我在这种情况下会是2?
答案 0 :(得分:5)
您想要count(distinct)
:
SELECT COUNT(DISTINCT `from`)
FROM tab
WHERE `to` = 9;
答案 1 :(得分:1)
如果您想要更详细的结果,可以使用GROUP BY
。
这样可以查看from
用户向to
用户发送消息的次数。
E.g。
SELECT from, to, count(*)
FROM tab
GROUP BY from, to
这将返回:
|from |to |count(*) |
|------|----|---------|
|7 |9 |2 |
|3 |9 |1 |
|3 |2 |1 |
如果您愿意,甚至可以插入限制:
SELECT from, to, count(*)
FROM tab
GROUP BY from, to
HAVING to = 9
这将导致:
|from |to |count(*) |
|------|----|---------|
|7 |9 |2 |
只是另外一种方法。