Avatar billede hulla Novice
11. september 2002 - 10:44 Der er 8 kommentarer og
2 løsninger

Finde den sidste post i tabellen

Hvordan får jeg fat i den sidst indsatte post i min tabel. Kan det lade sig gøre med en SQL streng ??
Avatar billede lasse_buck Nybegynder
11. september 2002 - 10:51 #1
Det mest rigtige er at tilføje et felt med tidsstempel (eller bare en fortløbende tæller). Tidsstemplet kan så sættes automatisk vha. en trigger ved INSERT og/eller UPDATE.
Avatar billede hulla Novice
11. september 2002 - 11:04 #2
Er der ikke et eller andet med EOF eller tage den første bagfra ?
Avatar billede flse Nybegynder
11. september 2002 - 13:36 #3
Spørgsmålet er hvordan du definerer "den sidst indsatte". Har du et autogenereret nøglefelt eller et TIMESTAMP/DATETIME felt som indeholder tidspunkt for oprettelse.
Hvis du har et sådan felt, kan du lave: "SELECT * FROM tabelnavn ORDER BY feltnavn DESC LIMIT 1", hvilket giver dig den post med højeste værdi af "feltnavn".
Avatar billede lasse_buck Nybegynder
11. september 2002 - 13:46 #4
Umiddelbart vil jeg mene, at databasen har lov til at organisere posterne i den rækkefølge den selv vil. Det er derfor ikke sikkert, at den sidst indsatte rækker ligger 'sidst' (selvom det ofte er tilfældet i praksis).

I Oracle ligger der et (skjult) felt på alle tabeller, som hedder ROWID. Jeg ved ikke, om det er tilfældet i MySQL. Hvis det er tilfældet kan man måske søge efter det største rowid.
Avatar billede flse Nybegynder
11. september 2002 - 13:57 #5
MySQL har ikke noget tilsvarende Oracle's ROWID (hvilket jeg iøvrigt ikke mener er fortløbende numre, men snarere HASH værdier .. men kan huske forkert)
Avatar billede jangravgaard Nybegynder
11. september 2002 - 18:38 #6
Hvis du har et autogeneret felt, som tildeles en værdi ved hver indsættelse, kan du med funktionen max() få den højeste værdi ud:
"select max(feltnavn) from tabelnavn"
Avatar billede hulla Novice
12. september 2002 - 10:33 #7
Det handler om at få fat i den sidst indsatte,..dvs. få fat i et Id lige idet man indsætter, så er det ligemeget hvor DB lægger den, så kan man altid få fat i den rigtige bagefter
Avatar billede flse Nybegynder
12. september 2002 - 10:36 #8
Hvis du skal have det sidst indsatte ID kan du benytte "SELECT LAST_INSERT_ID()".

Hvis du bruger PHP er der en funktion til dette formål: mysql_insert_id
Avatar billede hulla Novice
12. september 2002 - 13:27 #9
hvis nu jeg skriver RS = DBConnection.Execute("SELECT LAST_INSERT_ID()")

Så kommer den med en fejl om at den ikke kender metoden ...
Avatar billede flse Nybegynder
12. september 2002 - 14:04 #10
Jeg benytter præcis det samme SELECT statement (via JDBC), og det virker upåklageligt.

Du er sikker på at det et MySQL du benytter, og ikke f.eks. MS SQL? (hvor syntaksen er anderledes).
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester