2

次のようなテーブル tb1 があります。

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」が 1 つ、「212a3b」が 1 つ、「」が 3 つ) ですが、

SELECT COUNT(DISTINCT(id_connect))
FROM tb1
4

2 に答える 2

3
SELECT
    COUNT(CASE WHEN id_connect='' THEN 1 END)
  + COUNT(DISTINCT NULLIF(id_connect, ''))
FROM tb1
于 2012-05-02T10:49:17.077 に答える
-1

これは機能します:

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

出力:

5 

ここで実行されていることを確認してください。

于 2012-05-02T10:41:03.997 に答える