Domanda

In poche parole, ho una tabella con, tra le altre cose, una colonna per i timestamp. Voglio ottenere la riga con il più recente (cioè valore più grande) timestamp. Attualmente sto facendo questo:

SELECT * FROM table ORDER BY timestamp DESC LIMIT 1

Ma mi piacerebbe molto meglio fare qualcosa di simile:

SELECT * FROM table WHERE timestamp=max(timestamp)

Tuttavia, SQLite rifiuta questa query:

SQL error: misuse of aggregate function max()

La documentazione rel="noreferrer"> conferma questo comportamento (in fondo alla pagina):

  

Le funzioni aggregate possono essere utilizzati solo in un'istruzione SELECT.

La mia domanda è: è possibile scrivere una query per ottenere la riga con la più grande timestamp senza ordinare la selezionare e limitare il numero di righe restituite al 1? Questo sembra che dovrebbe essere possibile, ma credo che il mio SQL-fu non è fino al tabacco da fiuto.

È stato utile?

Soluzione

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

o, se SQLite insiste sul trattamento subselect come set,

SELECT * from foo where timestamp in (select max(timestamp) from foo)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top