Avatar billede krydset Nybegynder
16. november 2004 - 22:44 Der er 21 kommentarer og
1 løsning

finde maxid

heysa en hurtig en.

Hvordan kan jeg med en query finde maxid, altså det højeste id i en table med auto increment

//Thomas L.
Avatar billede hmortensen Nybegynder
16. november 2004 - 22:46 #1
Hvis det er lige når du indsætter, kan du bruge last_insert_id()
ellers
SELECT id FROM tabel ORDER BY id DESC LIMIT 1
Avatar billede arne_v Ekspert
16. november 2004 - 22:46 #2
SELECT MAX(id) FROM tabelnavn

Men lad være !!!!

Brug LAST_INSERT_ID() funktionen !
Avatar billede krydset Nybegynder
16. november 2004 - 22:47 #3
Jamen der er ikke lige når jeg har indsat, den kender jeg godt. Men kan jeg bruge den alligevel.
Avatar billede arne_v Ekspert
16. november 2004 - 22:54 #4
Bare det er den sidste auto increment der er genereret af din connection, så
virker LAST_INSERT_ID()
Avatar billede arne_v Ekspert
16. november 2004 - 22:58 #5
Problemet med SELECT MAX(id) eller mortensens variant er i flerbruger sammenhæng:

process 1: INSERT - genererer værdi 37
process 2: INSERT - genererer værdi 38
process 1: SELECT MAX(id) - finder 38
process 2: SELECT MAX(id) - finder 38
Avatar billede krydset Nybegynder
16. november 2004 - 22:59 #6
Kan du give et eks på en query hvor den indgår arne_v ??
Avatar billede arne_v Ekspert
16. november 2004 - 23:06 #7
Du kan enten bare hente den med:

SELECT LAST_INSERT_ID()

eller du kan bruge den i en INSERT:

INSERT INTO tabel2 VALUES (LAST_INSERT_ID(), 123, 'abc')
Avatar billede hmortensen Nybegynder
16. november 2004 - 23:10 #8
Og et andet problem, hvis der slettes rækker, så brister det lidt
Avatar billede krydset Nybegynder
16. november 2004 - 23:10 #9
Okaj men hvordan får jeg så udskrevet den som en var ?
Avatar billede arne_v Ekspert
16. november 2004 - 23:15 #10
Udfør queruyen:

SELECT LAST_INSERT_ID() AS lastid

og hent første række og enten første kolonne eller kolonne "lastid"

(præcis hvordan afhænger jo lidt af programmerings sprog)
Avatar billede hmortensen Nybegynder
16. november 2004 - 23:17 #11
I php behøver du ik selv lave forespørgelsen. Der kan bruges den indbyggede fuktion mysql_insert_id()
Avatar billede krydset Nybegynder
16. november 2004 - 23:29 #12
Jeg kan kun bruge mysql_insert_id() i forbindelse med en insert QUERY og det er IKKE tilfældet her
Avatar billede hmortensen Nybegynder
16. november 2004 - 23:31 #13
Kan du også kun med LAST_INSERT_ID()
Avatar billede arne_v Ekspert
16. november 2004 - 23:33 #14
Det er vel kun en INSERT som kan lave eny auto increment id ??
Avatar billede krydset Nybegynder
16. november 2004 - 23:37 #15
Det her vil ikke


$last_id_res = mysql_query("SELECT LAST_INSERT_ID() AS lastid FROM shout LIMIT 0,1") or die(mysql_error());
while ($last_id_row = mysql_fetch_array($last_id_res)) {   
    echo $last_id = $last_id_row['lastid'];
}


Giver 0
Men brude give 3
Avatar billede arne_v Ekspert
16. november 2004 - 23:39 #16
$last_id_res = mysql_query("SELECT LAST_INSERT_ID() AS lastid") or die(mysql_error());
while ($last_id_row = mysql_fetch_array($last_id_res)) { 
    echo $last_id = $last_id_row['lastid'];
}
Avatar billede arne_v Ekspert
16. november 2004 - 23:39 #17
Og husk det skal være samme connection som den der har lavet insert !
Avatar billede krydset Nybegynder
16. november 2004 - 23:41 #18
Jamen så kan jeg jo ikke bruge last_insert_id da der ikke laves nogen insert på denne her side
Avatar billede krydset Nybegynder
16. november 2004 - 23:42 #19
Men så må det være den her
SELECT id FROM tabel ORDER BY id DESC LIMIT 1
Der kommer det tætteste på det jeg skal bruge
Avatar billede hmortensen Nybegynder
17. november 2004 - 06:56 #20
I hvilken sammenhæng skal det bruges, for det må kunne løses på en mere skudsikker måde
Avatar billede arne_v Ekspert
17. november 2004 - 08:32 #21
Kan du ikke hente den last insert id på siden hvor der laves INSERT, gemme
den i sessionen og bruge den på den anden side ?
Avatar billede krydset Nybegynder
05. december 2004 - 14:33 #22
Luker her

Brugte
SELECT id FROM tabel ORDER BY id DESC LIMIT 1
Hvis i vil ha point for hjælpen så skriv det her så opretter jeg anden spm med point
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