ottenere max() e i relativi campi di quel record | SQL & MySQL

Topic: Pubblico - Composto da 8 Posts di 3 Utenti.

02 Dicembre, 2011 14:47 #1
piratolo
Utente

piratolo
Registrato: Nov, 2011
Posts: 11
Offline

Ciao,
esiste un modo per ottenere in un solo record sia il max(id) che i relativi campi di quel record.
O per ottenere i campi di quel record devo fare una seconda query utilizzando where ed il max id appena ottenuto?
Grazie

06 Dicembre, 2011 19:29 #2
g2d
Moderatore

g2d
Registrato: Jul, 2008
Posts: 957
Offline
Segui g2d su Twitter!

ciao

hai mai provato a fare così?

1SELECT max(campo), campo1, campo2  FROM tabella

Ultima modifica 06 Dicembre, 2011 19:30 di g2d


Un tempo ero algweb ora sono g2d

13 Dicembre, 2011 09:32 #3
piratolo
Utente

piratolo
Registrato: Nov, 2011
Posts: 11
Offline

non va, mi seleziona i record con l'id minore :(
Funziona solo se faccio così SELECT max(campo) as id FROM tabella

Mi viene il dubbio che non si possa fare uan cosa del genere

13 Dicembre, 2011 09:43 #4
re-verse
Moderatore

re-verse
Registrato: Jul, 2008
Posts: 312
Offline

ERESIAAAAAAAAAAAAAAAAAAA non si può fare?? : D Ma dai! :D :D :D ... potresti inserire nel topic il bump della tabella? qualcosa di può sempre fare, vedrai ;)


Salvatore DC

La mente è come un paracadute: funziona solo se si apre. A.Einstein.

13 Dicembre, 2011 12:41 #5
piratolo
Utente

piratolo
Registrato: Nov, 2011
Posts: 11
Offline

la query la sto provando direttamente su mysql, non da nessun errore, semplicemente tira fuori dati non congruenti.

se faccio SELECT max(id), nome FROM tabella ottengo questo
-------------
|id | nome |
--------------
|3 | lunedi |
--------------
l'id che ricave è giusta, è quello massimo. ma 'lunedì' in realtà è il nome del primo record, che ha id 1.

13 Dicembre, 2011 13:34 #6
re-verse
Moderatore

re-verse
Registrato: Jul, 2008
Posts: 312
Offline

sembra una query molto simile ad una fatta in un altro topic poco fa':

prova in questo modo:

1SELECT campo, campo1, campo2  FROM tabella
2ORDER BY campo DESC
3LIMIT 0,1


Salvatore DC

La mente è come un paracadute: funziona solo se si apre. A.Einstein.

13 Dicembre, 2011 14:20 #7
piratolo
Utente

piratolo
Registrato: Nov, 2011
Posts: 11
Offline

Così funziona; mi rimane però il duddio sul fatto che si possa ottenere in un solo record il max id e i relativi campi.
Comunque grazie per la riposta :)

13 Dicembre, 2011 14:43 #8
re-verse
Moderatore

re-verse
Registrato: Jul, 2008
Posts: 312
Offline

Prego, è un piacere... per il tuo dubbio non ho ben capito a questo punto cosa ti serve esattamente - la query precedente praticamente ordina i nostri dati dall'id più grande a quello più piccolo, limitando i dati ad un solo record. In questo modo avrai esattamente il record che fa riferimento all'id maggiore della tua tabella.

Un altro modo per fare questo, senza la LIMIT sarebbe il seguente:

1SELECT campo, campo1, campo2  FROM tabella
2WHERE campo=(SELECT MAX(campo) FROM tabella)

Ma non userei una query annidata così a cuor leggero ;)


Salvatore DC

La mente è come un paracadute: funziona solo se si apre. A.Einstein.

Condividi su:

Loggati o Registrati per replicare