2015-05-19 135 views
5

我有以下內容的表:集團和過濾mysql的結果

 
| Country  | Username  | 
+---------------+----------------+ 
| US   | John   | 
| IT   | Pedro   | 
| US   | Bob   | 
| FR   | Jill   | 
| 192.168.1.2 | Roupraht  | 
| 192.168.1.20 | Antonio  | 
+---------------+----------------+ 

我要計算每個國家的用戶,IP地址,而不是國家的用戶應該算如「未知」 ;

我已成功地寫出下面的SQL查詢:

select country, count(*) as total from users group by country; 

,我得到了以下結果:

 
+-----------------+-------+ 
| country   | total | 
+-----------------+-------+ 
| 192.168.1.2  |  1 | 
| 192.168.1.20 |  1 | 
| US    |  2 | 
| IT    |  1 | 
| FR    |  1 | 
+-----------------+-------+ 

我怎麼能算所有的IP地址爲「未知」?
我的目標是讓表是這樣的:

 
+-----------------+-------+ 
| country   | total | 
+-----------------+-------+ 
| Unknown   |  2 | 
| US    |  2 | 
| IT    |  1 | 
| FR    |  1 | 
+-----------------+-------+ 
+0

你可以用名字ISIP增加一個列是/否。根據它的價值,你可以計算未知數據。 –

回答

1

,你可以使用mysql LI語句與if語句:

select if(country LIKE '%.%.%.%', 'unknown', country), count(*) as total from users group by country; 
+0

這不會總結'未知'計數,而是爲每個IP地址打印一個'未知'行。你應該通過它別名第一列和組。 –

0

您可以使用此

set @unknown = (select country from table where country LIKE '%.%.%.%'); 

設置一個變量「未知」所有IP地址