En pocas palabras, tengo una tabla con, entre otras cosas, una columna para marcas de tiempo. Quiero obtener la fila con la marca de tiempo más reciente (es decir, el valor más grande). Actualmente estoy haciendo esto:Agregue funciones en la cláusula WHERE en SQLite
SELECT * FROM table ORDER BY timestamp DESC LIMIT 1
Pero yo preferiría hacer algo como esto:
SELECT * FROM table WHERE timestamp=max(timestamp)
Sin embargo, SQLite rechaza esta consulta:
SQL error: misuse of aggregate function max()
El documentation confirma esta comportamiento (parte inferior de la página):
Las funciones agregadas solo se pueden usar en una instrucción SELECT.
Mi pregunta es: ¿es posible escribir una consulta para obtener la fila con la mayor marca de tiempo sin pedir la selección y la limitación del número de filas devueltas a 1? Parece que debería ser posible, pero supongo que mi SQL-fu no está preparado.
Funciona muy bien, gracias. Sabía que tenía que ser algo simple. –
Simplemente curioso, ¿la subconsulta causa que sqlite procese la tabla dos veces, o está optimizada? –
Hace que procese la tabla dos veces: una para encontrar el máximo y otra para encontrar las coincidencias.No estoy seguro de que pueda obtener el algoritmo de una pasada para esto de SQL. – SquareCog