0

我正在为我的服务编写一个 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 是一个不断递增的序列),其中错误字段不为空。

4

1 回答 1

2

这个解决方案非常优雅。查询必须做两件事:识别最后十行,然后计算错误数。这种结构准确地捕获了它需要做的事情。

您可以摆脱该where子句,只需使用:

select count(error)

子句中的子查询from非常有用,没有理由认为它们“不优雅”。

于 2013-02-24T15:57:47.207 回答