Pregunta

En pocas palabras, tengo una tabla con, entre otras cosas, una columna de marcas de tiempo. Quiero conseguir la fila con el más reciente marca de tiempo (es decir, mayor valor). Actualmente estoy haciendo esto:

SELECT * FROM table ORDER BY timestamp DESC LIMIT 1

Pero yo preferiría haría algo como esto:

SELECT * FROM table WHERE timestamp=max(timestamp)

Sin embargo, SQLite rechaza esta consulta:

SQL error: misuse of aggregate function max()

La documentación rel="noreferrer"> confirma este comportamiento (parte inferior de la página):

  

Las funciones de agregación sólo pueden ser utilizados en una instrucción SELECT.

Mi pregunta es: ¿es posible escribir una consulta para obtener la fila con la mayor marca de tiempo sin necesidad de ordenar el selecto y limitar el número de filas devueltas a 1? Esta parece que debería ser posible, pero supongo que mi SQL-fu no es hasta el tabaco.

¿Fue útil?

Solución

SELECT * from foo where timestamp = (select max(timestamp) from foo)

o, si SQLite insiste en tratar subselects como conjuntos,

SELECT * from foo where timestamp in (select max(timestamp) from foo)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top