0

クエリを実行する理由:

SELECT id, MAX(probe_time) AS Expr1
FROM app_states
GROUP BY logon_id

SELECT id, MIN(probe_time) AS Expr1
FROM app_states
GROUP BY logon_id

は同じid結果になります。

すべてのユーザーの最大時間または最小時間で行を選択したいと考えています。

4

1 に答える 1

2

ここでサブクエリを使用する必要があると思います。

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

ところで、SQLite は MIN/MAX で興味深い最適化を行います。

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

 SELECT MIN(x) FROM table;
 SELECT MAX(x) FROM table;

これらの最適化を行うには、テーブルと列の名前のみを変更して、上記の形式で正確に表示する必要があります。WHERE 句を追加したり、結果に対して演算を行ったりすることは許可されていません。結果セットには 1 つの列が含まれている必要があります。MIN 関数または MAX 関数の列は、インデックス付きの列である必要があります。

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

于 2012-04-03T20:48:21.083 に答える