0

私は自分のサービス用の nagios プラグインを書いています。エラーになった最後の X アクションの数を確認したいと思います。

私は仕事をするこのクエリを思いつきましたが、選択から選択するのは面倒に思えます。他の、おそらくもっとエレガントな解決策があるかどうか知りたいです。

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

これは、エラー フィールドが null ではない、テーブル (id は常に増加するシーケンス) 内の最後の 10 内の行の数をカウントします。

4

1 に答える 1

2

このソリューションは非常にエレガントです。クエリは2つのことを行う必要があります。最後の10行を識別してから、エラーの数をカウントします。この構造は、実行する必要があることを正確にキャプチャします。

where句を削除して、次を使用することができます。

select count(error)

条項内のサブクエリfromは非常に便利であり、それらを「不法」と考える理由はありません。

于 2013-02-24T15:57:47.207 に答える