View Full Version : [SQL] First e Last
query SQL:
SELECT FIRST ( img ) AS I FROM blog LIMIT 0 , 30
Messaggio di MySQL: #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 '( img ) AS I from blog LIMIT 0, 30' at line 1
Dalla guida:
FIRST(column) Returns the value of the first record in a specified field (not supported in SQLServer2K)
LAST(column) Returns the value of the last record in a specified field (not supported in SQLServer2K)
Qualcuno mi aiuta a capire cosa non va?
Non c'è la GROUP BY.
First() e Last() sono funzioni di aggregazione.
ESEMPIO: ho tre record:
ID - NOME
1 - mario
2 - giuseppe
3 - mario
SELECT First(ID) FROM tabella GROUP BY NOME
restituisce
1 - Mario
2 - Giuseppe
Se invece avessi usato
SELECT Last(ID) FROM tabella GROUP BY NOME
3 - Mario
2 - Giuseppe
Infine
SELECT Sum(ID) FROM tabella GROUP BY NOME
4 - Mario
2 - Giuseppe
PS: Nota bene First() restituisce il primo record incontrato nel raggruppamento, indipendentemente dal suo ordine. Ad esempio se per qualche motivo, fisicamente il DBMS incontra prima l'id 4 e poi il 2, restituisce 4.
Min() invece restituisce il minimo ordinato.
Last() e Max() stesse considerazioni
Dalla guida:
FIRST(column) Returns the value of the first record in a specified field (not supported in SQLServer2K)
LAST(column) Returns the value of the last record in a specified field (not supported in SQLServer2K)
Qualcuno mi aiuta a capire cosa non va?
Che guida stai seguendo ? Non sarà mica per SQLServer ? In tal caso i due dialetti SQL non sono interscambiabili :)
Select Last(id) from blog group by user
tabella blog:
id 1 user pippo
id 2 user gianni
id 3 user gianni
#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 '( id ) from blog group by user LIMIT 0, 30' at line 1
Anche prima usavo group by ma non l'avevo riportato perchè ho fatto copia e incolla e non mi sono accorto della mancanza.
Sto seguendo qua: http://dev.mysql.com/doc/mysql/en
Uso MySql di Aruba.
:help:
p.s. Questo funziona: Select max(id) from blog GROUP by user
Io sto parlando di quelle due righe ti ho quotato...dove hai trovato quelle definizioni ?
effettivamente "AS I" è una particolarità di SQL 2000, non so se MySql la supporta...
Io sto parlando di quelle due righe ti ho quotato...dove hai trovato quelle definizioni ?
google..
http://www.w3schools.com/sql/sql_functions.asp
google..
http://www.w3schools.com/sql/sql_functions.asp
Infatti se leggi bene, ti dice che sono specifiche di Access e di SQL Server!
Sicuramente MySQL non supporta Last()
Infatti se leggi bene, ti dice che sono specifiche di Access e di SQL Server!
Sicuramente MySQL non supporta Last()
:cry:
Mo come faccio? Mission impossible..
tabella blog:
id 1 immagine A user Pippo
id 2 immagine B user Gianni
id 3 immagine C user Pippo
A me serve avere l'ultima Immagine inserita da Pippo.
Siccome la colonna immagine non ha un ordine non posso dire max(immagine) dovrei usare last(immagine).
Quindi:
SELECT user,max(id) as I,immagine FROM blog GROUP BY user ORDER BY I DESC
non mi seziona l'immagine C ma l'immagine A.
Precisamente:
Pippo 3 A (io voglio Pippo 3 C)
Dovrei quindi usare last(img) ma non funziona..
SELECT * FROM Blog INNER JOIN (SELECT Max(Id),User FROM blog GROUP BY User) AS Temp ON Blog.Id = Temp.Id
You have an error in your SQL syntax.
Sei sicuro di quel Select all'interno del JOIN?
Anzi del select all'interno del FROM che sembra non possa funzionare..
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.