|from| to |
| 7 | 9 |
| 7 | 9 |
| 3 | 9 |
| 3 | 2 |
可以說我是用戶9並且想知道有多少用戶寫信給我。 與查詢:SQL計算來自特定字段的唯一值
SELECT COUNT(*) FROM tab WHERE to = 9;
我得到3,這意味着我得到了3級新的消息,但如何找出豪很多網友給我寫了這將是2在這種情況下?
|from| to |
| 7 | 9 |
| 7 | 9 |
| 3 | 9 |
| 3 | 2 |
可以說我是用戶9並且想知道有多少用戶寫信給我。 與查詢:SQL計算來自特定字段的唯一值
SELECT COUNT(*) FROM tab WHERE to = 9;
我得到3,這意味着我得到了3級新的消息,但如何找出豪很多網友給我寫了這將是2在這種情況下?
你想count(distinct)
:
SELECT COUNT(DISTINCT `from`)
FROM tab
WHERE `to` = 9;
非常感謝我會接受 –
如果您想更詳細的結果,你可以使用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 |
只是一個額外的方式來做到這一點。
請注意,您沒有PRIMARY KEY,在適當的時候可能會出現問題。 – Strawberry
是的,我得到了一個,但它不會寫在這裏^^ –