2013-02-24 11 views
0

我正在爲我的服務編寫一個nagios插件,我想檢查最後X個動作中導致出錯的數量。獲取表格中最後X行內出現的值的數量

我想出了這個查詢來完成這個工作,但是從select中選擇對我來說似乎很麻煩,我想知道是否還有其他更優雅的解決方案。

SELECT 
    count(id) 
FROM 
    (SELECT * FROM table ORDER BY id DESC LIMIT 10) as T 
WHERE error IS NOT NULL; 

這將統計表中最後10位內的行數(id是不斷增加的序列),其中錯誤字段不爲空。

回答

2

該解決方案非常優雅。查詢必須做兩件事:確定最後十行,然後計算錯誤的數量。這種結構恰恰捕獲了它需要做的事情。

可以擺脫where條款,只是使用:

select count(error) 

子查詢from子句中是非常有用的,也沒有理由認爲它們是「不雅」。

+0

感謝您的保證,直接指望字段而不是WHERE子句。 – Karolis 2013-02-24 16:00:44