PDA

Visualizza la versione completa : [SQL] Selezionare il penultimo record


peppespe
18-10-2007, 15:17
Salve mediante una tabella di log vorrei selezionare solo il penultimo record accesso in modo tale da ricavare l'ultima visita di un utente esclusa quella correte (la quale sarebbe l'ultima registrata). Come posso modificare questa query base?



SELECT datetimeip
FROM log
WHERE iduser = 3

oregon
18-10-2007, 18:45
Mah ... a me e' venuta questa

SELECT TOP 1 *
FROM
(SELECT TOP 2 datetimeip
FROM log
WHERE iduser = 2
ORDER BY datetimeip DESC)
ORDER BY datetimeip


... non e' detto che non ci sia qualcosa di meglio ...

mondobimbi
19-10-2007, 08:36
a me venuta cos, ma forse la stessa cosa


select *
from (select * from log order by datetimeip desc limit 2) as L
order by datetimeip
limit 1;


ciao
sergio

peppespe
19-10-2007, 12:28
Danno entrabe errore:



Errore

query SQL: Documentazione

SELECT *
FROM (

SELECT *
FROM log
ORDER BY datetimeip DESC
LIMIT 2
) AS L
ORDER BY datetimeip
LIMIT 1

Messaggio di MySQL: Documentazione
#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select * from log order by datetimeip desc limit 2) as L
order

MacApp
19-10-2007, 12:52
Avendo la definizione della tabella ed il database (che solo nel tuo ultimo post si intuisce essere MySQL) e la versione, potrebbe essere d'aiuto.

In ogni modo con (PostgreSQL) 8.2.5



-- definizione tabella h_foto
CREATE TABLE h_foto
(
id integer NOT NULL PRIMARY KEY
)


la seguente:



select max (id)
from h_foto
where id <> (select max (id) from h_foto)


restituisce il penultimo id pi grande.

Adattala alle tue esigenze.

mondobimbi
19-10-2007, 13:31
Originariamente inviato da peppespe
Danno entrabe errore:



Errore

query SQL: Documentazione

SELECT *
FROM (

SELECT *
FROM log
ORDER BY datetimeip DESC
LIMIT 2
) AS L
ORDER BY datetimeip
LIMIT 1

Messaggio di MySQL: Documentazione
#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select * from log order by datetimeip desc limit 2) as L
order

su mysql >=5 giusta, cosa adoperi?
ciao
sergio

peppespe
19-10-2007, 15:11
La versione di MySQL la 1.4, e mi sa che la query non v:



Errore

query SQL: Documentazione

SELECT max( datetimeip )
FROM log
WHERE datetimeip <> (
SELECT max( datetimeip )
FROM log )

Messaggio di MySQL: Documentazione
#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(datetimeip)
from log
where datetimeip <> (select max (dateti

mondobimbi
19-10-2007, 15:54
tempo di fare un update
ciao
sergio

Loading