03. juni 2004 - 00:25
Der er
15 kommentarer og 1 løsning
Kan man få LAST_INSERT_ID() til at vælge flere end den sidste?
Jeg ønkser at den skal være de 10 sidste indsatte f.eks. Kan man det?
Annonceindlæg fra Barco
Hvis du bruger en auto_increment id (hvilket du nok gør siden du spørger om last_insert_id()) så kan du jo bare gøre: SELECT id FROM tabel ORDER BY id DESC LIMIT 10; Så får du de ti sidste/højeste id'er. Men det kræver altså at id'erne er fortløbende.
Øh SELECT id FROM tabel ORDER BY id DESC LIMIT 10; kræver ikke at de er fortløbende - kun at de er stigende, hvilket de er. Men det er jo samme princip som: SELECT id FROM tabel ORDER BY id DESC LIMIT 1; Altså de sidste X indsatte, mens LAST_INSERT_ID er sidst indsatte for connection. Stor forskel i fler bruger sammenhæng !
Jeg har også tidligere bare sagt: SELECT id FROM tabel ORDER BY id DESC LIMIT 0,10; Men det lagde min database ned da den skulle over 37000 linier igennem hver gang for at finde ud af at sortere dem. Derfor hvis jeg kunne bremse den ved at sige det kun var de sidste 10 indsatte.
arne_v: Det var faktisk det jeg mente med forløbende. Jeg har vist en forkert opfattelse af ordet. falslev: 37.000 linjer? Det lyder lidt voldsomt at du kan lægge din database ned på baggrund af det.. Har du lavet et index på id?
Har både id som primær og uniq. Burde det ikke være nok?
Jow. Det lyder bare lidt underligt (på min server er 37000 rækker ikke noget der får den i knæ, og den er ikke speciel stor). Men det kan være at arne har nogle forslag.
"fortløbende" opfatter jeg som "stigende uden huller" primary key er i sig selv unik, så der er ikke nogen grund til at tilføje et unikt index Jeg forstår heller ikke helt performance problemet.
16. juni 2004 - 22:19
#10
Tid at få afsluttet spørgsmålet ?
17. juni 2004 - 09:26
#11
Undskyld men hvordan lukker jeg?
17. juni 2004 - 09:56
#12
Du beder dem som har hjulpet dig ligge et svar og når de har gjordt det så accepterer du svaret. Hvis du synes at problemet stadig er uløst, så prøv og post en status og se om der kan komme en løsning på bordet. NB: "kan ikke lade sig gøre" er også et validt svar som bør give point hvis det er korrekt.
22. juni 2004 - 09:02
#13
Dennis og arne v laver i ikke et svar hver så i kan få point.
22. juni 2004 - 09:42
#14
gerne
23. juni 2004 - 10:37
#15
Da Dennismp ikke giver lyd fra sig lukker jeg spørgsmålet nu :)
23. juni 2004 - 10:51
#16
falslev> ok dennis> Hvis du giver lyd fra dig så overfører jeg de 15p til dig.
Computerworld tilbyder specialiserede kurser i database-management