MySQL一次统计多个列或单独处理事务

时间:2015-10-21 17:04:18

标签: mysql

我有一个每日cron,它计算特定列的非空和非空字符串行的数量,例如:

SELECT count(first_name) FROM users WHERE first_name IS NOT NULL and first_name IS != ''
SELECT count(last_name) FROM users WHERE last_name IS NOT NULL and first_name IS != ''

如果我在一次MySQL调用中执行此操作,性能是否会得到改善?

2 个答案:

答案 0 :(得分:0)

对1个查询使用CASE条件

SELECT SUM(CASE WHEN first_name IS NOT NULL and first_name != '' THEN 1 ELSE 0 END),
       SUM(CASE WHEN last_name IS NOT NULL and last_name != '' THEN 1 ELSE 0 END) FROM users

答案 1 :(得分:0)

我相信这个查询已经足够了:

COUNT

正如其他开发人员指出的那样,''甚至会计算SELECT COUNT(DISTINCT first_name)-1, COUNT(DISTINCT last_name)-1 FROM users 空值。

恕我直言,这是可以接受的。如果没有,你可以:

COUNT

这不完全是你所需要的,但如果你确定你有那些可行的空值:

如果您想要返回正确 SELECT SUM(CASE WHEN first_name IS NOT NULL and first_name != '' THEN 1 ELSE 0 END), SUM(CASE WHEN last_name IS NOT NULL and last_name != '' THEN 1 ELSE 0 END) FROM user 的清晰查询,最好使用@Mihai查询:

{{1}}

但是这个可以在大量唱片上取得很大成绩。