Sqlite group by之后的表达式具有相同的结果

Sqlite group by之后的表达式具有相同的结果,sqlite,Sqlite,为什么查询: SELECT id, MAX(probe_time) AS Expr1 FROM app_states GROUP BY logon_id 及 具有相同的id结果 我希望为每个用户选择具有最大或最小时间的行。恐怕您必须在此处使用子查询 SELECT id, probe_time FROM app_states WHERE probe_time = (SELECT MAX(probe_time) from app_states GROUP BY logon_id) 顺便说一句,S

为什么查询:

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

具有相同的
id
结果


我希望为每个用户选择具有最大或最小时间的行。

恐怕您必须在此处使用子查询

SELECT id, probe_time
FROM app_states
WHERE probe_time = (SELECT MAX(probe_time) from app_states GROUP BY logon_id)
顺便说一句,SQLite对最小值/最大值进行了有趣的优化:

假设存在适当的索引,将优化以下形式的查询以在对数时间内运行:

 SELECT MIN(x) FROM table;
 SELECT MAX(x) FROM table;
为了实现这些优化,它们必须完全按照上面所示的形式出现——只更改表和列的名称。不允许添加WHERE子句或对结果进行任何运算。结果集必须包含一列。“最小”或“最大”函数中的列必须是索引列


-

为什么选择
id
但按
logon\u id
分组?这是子查询,我想在以后的联接中使用id。我想像上面那样使用linq查询进行选择,并使用id进行连接。
 SELECT MIN(x) FROM table;
 SELECT MAX(x) FROM table;