2016-11-29 74 views
1
|from| to | 
| 7 | 9 | 
| 7 | 9 | 
| 3 | 9 | 
| 3 | 2 | 

可以說我是用戶9並且想知道有多少用戶寫信給我。 與查詢:SQL計算來自特定字段的唯一值

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

我得到3,這意味着我得到了3級新的消息,但如何找出豪很多網友給我寫了這將是2在這種情況下?

+0

請注意,您沒有PRIMARY KEY,在適當的時候可能會出現問題。 – Strawberry

+1

是的,我得到了一個,但它不會寫在這裏^^ –

回答

5

你想count(distinct)

SELECT COUNT(DISTINCT `from`) 
FROM tab 
WHERE `to` = 9; 
+0

非常感謝我會接受 –

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  | 

只是一個額外的方式來做到這一點。