私はSQLについて簡単な質問(?)を持っています。私は数回前にこの問題に遭遇しましたが、私はいつもそれを解決しましたが、私はより洗練されたソリューションとおそらくより速いソリューションを探しています。タイムスタンプに基づいて1つの行を除いて、すべての結果を取得するにはどうすればよいですか?
問題は、タイムスタンプ値の最大値を持つテーブル以外のすべての行を選択することです(この場合はサマリー行ですが、これはどのような方法でもマークされていないため、私の結果に関連する)。
私はこのような何か行うことができます:
select * from [table] t
where loggedat < (select max(loggedat) from [table] and somecolumn='somevalue')
and somecolumn='somevalue'
をしかし、大きなテーブルで作業する場合、これは一種の遅いようです。助言がありますか?
SQLサーバー、Oracle、「アクセス」?どのデータベースを使用していますか? – riffnl
あなたのソリューションは私には完全に(そしてエレガントに)見えます。結合が速くなる(または遅くなる)ことがあります。 –
これはMS SQL Server(2005)です。 – cuj74