2012-05-02 30 views
2

我有一個表TB1是這樣的:MySQL的COUNT與空柱

id | building | id_connect | 
====+==========+============ 
1 |  1 |  "328abbc"  
2 |  3 |  "328abbc"  
3 |  4 |  "212a3b"  
4 |  1 |  "212a3b" 
5 |  2 |  "" 
6 |  2 |  "" 
7 |  7 |  "" 

我需要得到不同id_connect的計數如果字符串是不同的,以「」,但每個空字符串(「」)具有添加1 ...

在該示例中,所需的結果將是5(一個「328abbc」,一個「212a3b」和三個「」),但我只獲得3

SELECT COUNT(DISTINCT(id_connect)) 
FROM tb1 

回答

3
SELECT 
    COUNT(CASE WHEN id_connect='' THEN 1 END) 
    + COUNT(DISTINCT NULLIF(id_connect, '')) 
FROM tb1 
+0

看到它作爲替代@波希米亞的sqlfiddle [這裏](http://sqlfiddle.com/#!2/e611a/8) 。 – eggyal

+0

謝謝,我會嘗試兩種方式! – Stokres

+0

@eggyal you're a noob:'COUNT(CASE WHEN id_connect =''THEN 1 END)'與COUNT(id_connect ='')相同' – Bohemian

-1

這個作品:

SELECT COUNT(DISTINCT(if(id_connect = '', concat(id, 'text not found in id_connect'), id_connect))) 
FROM tb1 

輸出:

5 

看到它運行here

+0

行 - 現在就修好了。我誤讀了這個問題 – Bohemian

+0

@Bohemian:如果一個空白的'id'匹配'id_connect'會怎麼樣? – eggyal

+0

謝謝!我感謝您的幫助! – Stokres