2015-02-24 79 views
1

我有一個相當複雜的陳述,我試圖寫。我不知道該怎麼做,或者即使有可能。MySQL計數組數

我有一個日誌記錄系統,它可以掃描服務器並對給定時刻在線的每個用戶進行編目。這裏是我的表看起來像:

----------------- 
| ab_logs | 
----------------- 
|  id  | 
| scan_id | 
| found_user | 
----------------- 

id是一個自增的主鍵。除此之外沒有任何實際價值。

scan_id是在每次成功掃描所有用戶後遞增的整數。這樣我就可以將不同掃描結果分開。

found_user。在掃描期間存儲哪些用戶在線。

以上會產生一個表可能看起來像這樣的:

id | scan_id | found_user 
---------------------------- 
1 |  1  | Nick 
2 |  2  | Nick 
3 |  2  | John 
4 |  3  | John 

所以在第一次掃描系統發現,只有尼克在線。二號找到了尼克和約翰。在3日,約翰仍然在線。

我知道我可以通過下面的查詢給定的掃描過程中的在線用戶數:

SELECT COUNT(*) FROM ab_logs WHERE scan_id = $scan_id 

我的問題是,我想對所有掃描上面的一個結果。這可能沒有循環上述查詢X次?

+4

'SELECT COUNT(*)FROM ab_logs GROUP BY scan_id' – BenM 2015-02-24 12:11:36

回答

2

可以使用GROUP BY功能如下:

SELECT COUNT(*) FROM ab_logs GROUP BY scan_id 
+0

乾杯!我認爲「GROUP BY」隻影響數據輸出的方式,而不影響實際的計算。 – Chris 2015-02-24 12:19:59

+0

@Chris,很高興我可以幫助:) – BenM 2015-02-24 12:22:32

1

是的,你可以使用GROUP BY這樣的:

SELECT COUNT(*) FROM ab_logs GROUP BY scan_id 
+1

請註冊已發佈的答案,而不是簡單地複製它們。 – BenM 2015-02-24 12:19:24

+0

@BenM我知道這個答案,所以我回答了好吧,我會照顧那:) – 2015-02-24 12:20:39