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”、一个“212a3b”和三个“”),但我只得到 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 回答