2012-04-03 22 views
0

を持っています。式は同じ結果クエリはなぜ

すべてのユーザーに対してMAXまたはMIN時間の行を選択したいと考えています。

+0

なぜあなたはlogon_id' 'で' id'が、グループを選択していますか? – bernie

+0

これはサブクエリです。後でジョインするためにidを使用したいと思います。私は上記のようなlinqクエリで選択し、ジョインにidを使用したいと思います。 – userbb

答えて

2

ここではサブクエリを使用する必要があります。

SELECT id, probe_time 
FROM app_states 
WHERE probe_time = (SELECT MAX(probe_time) from app_states GROUP BY logon_id) 

BTW、SQLiteはMIN/MAXに興味深い最適化を行います。

SELECT MIN(x) FROM table; 
SELECT MAX(x) FROM table; 
を次の形式の

クエリは、適切なインデックスが存在すると仮定すると、対数時間で実行するように最適化されます

これらの最適化を実行するには、表と列の名前のみを変更して、上記の形式で正確に表示する必要があります。 WHERE句を追加したり、結果に対して算術演算を行うことは許されません。結果セットには単一の列が含まれている必要があります。 MIN関数またはMAX関数の列は、索引付き列でなければなりません。

からhttp://www.sqlite.org/optoverview.html#minmax

関連する問題