field1 field2
a 1
b
c 3
e 4
f
我需要在查询计数FIELD1和not empty field2
有:
SELECT COUNT(field1) FROM table
+
SELECT COUNT(field2) FROM table WHERE field2 != ''
结果应该是5和3 in one query
。
可能吗?
field1 field2
a 1
b
c 3
e 4
f
我需要在查询计数FIELD1和not empty field2
有:
SELECT COUNT(field1) FROM table
+
SELECT COUNT(field2) FROM table WHERE field2 != ''
结果应该是5和3 in one query
。
可能吗?
UNION:
+--------+--------+
| field1 | field2 |
+--------+--------+
| 5 | 3 |
+--------+--------+
如果中的空值柱是''
(空字符串),而不是实际NULL
,你可以试试这个:
select count(field1), sum(case when field2 != '' then 1 else 0 end)
from my_table;
这将返回5和5; 'count()'计数任何非NULL值,包括空字符串 – 2010-04-11 00:31:05
@Michael Mrozek,是的,我注意到他在他的问题中使用'!='''并且相应地更新了我的帖子。 – 2010-04-11 00:35:39
与相同的列格式查询的结果结合起来,用作馅饼:)
select count(field1), count(field2)
from my_table
结果他们很容易与
SELECT w FROM x
UNION
SELECT y FROM z
SELECT
(SELECT COUNT(field1) FROM table) AS count1,
(SELECT COUNT(field2) FROM table WHERE field2 != '') AS count2
这是我个人最喜欢的完全简单和半直观。 – 2013-08-30 18:46:46
还有一种方法:
SELECT COUNT(field1), COUNT(IF(field2='', NULL, field2))
FROM ...
你想5 *和* 3,或仅8 ? – 2010-04-11 00:26:57
field1 = 5和field2 = 3 – Qiao 2010-04-11 00:34:59