我正在为我的服务编写一个nagios插件,我想查看最后X次操作中有多少导致错误。
我已经提出了这个完成工作的查询,但是从select中选择对我来说似乎很混乱,我想知道是否还有其他更好的解决方案。
SELECT
count(id)
FROM
(SELECT * FROM table ORDER BY id DESC LIMIT 10) as T
WHERE error IS NOT NULL;
这会计算表格中最后10个内的行数(id是一个递增的序列),其中错误字段不为空。
答案 0 :(得分:2)
这个解决方案非常优雅。查询必须做两件事:识别最后十行,然后计算错误数。这种结构准确地捕获了它需要做的事情。
您可以删除where
子句并使用:
select count(error)
from
子句中的子查询非常有用,没有理由将它们视为“不优雅”。