sql计算特定字段的唯一值

时间:2016-11-29 11:36:34

标签: php mysql sql

|from| to | 
|  7 |  9 |
|  7 |  9 |
|  3 |  9 |
|  3 |  2 |

让我们说我是用户9并且想知道有多少用户写信给我。 查询:

SELECT COUNT(*) FROM tab WHERE to = 9;

我得到3这意味着我收到了3条新消息,但是如何找出很多用户写的我在这种情况下会是2?

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        |

只是另外一种方法。

相关问题