为什么要查询:
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
结果。
我希望为每个用户选择具有 MAX 或 MIN 时间的行。
为什么要查询:
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
结果。
我希望为每个用户选择具有 MAX 或 MIN 时间的行。
恐怕您必须在这里使用子查询。
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 子句或对结果进行任何算术运算。结果集必须包含单个列。MIN 或 MAX 函数中的列必须是索引列。