Avatar billede rasta123 Nybegynder
03. februar 2003 - 23:21 Der er 9 kommentarer og
3 løsninger

Hvor id er størst?

Hej.. Kan nogen hjælpe mig!..
Jeg har nogle oplysninger jeg indtaster i en form, som bliver tilføjet en tabel i min DB med id som autoinc..

Er der en simpel forespørgsel der siger where id=max el. sådan noget, hvor jeg uden videre kan få id nummeret på den sidst tilføjede post i tabellen, altså der hvor id er størst??

På forhånd tak!
Avatar billede disky Nybegynder
03. februar 2003 - 23:23 #1
select * from tabel where order by ID desc limit 0,1

Skulle hente den højeste ID ud til dig.
Avatar billede sthen Nybegynder
03. februar 2003 - 23:26 #2
SELECT id FROM tabel WHERE soeg LIKE '%soeg%' LIMIT 1 DESC
Avatar billede websmith Nybegynder
03. februar 2003 - 23:27 #3
Ja det skulle fungere, men måske ikke efter hensigten. Hvis der er en anden bruger som samtidig opretter en record, så får du måske hans ID.

Du er nødt til at låse tabellen først.

Dvs.
LOCK tabelnavn
insert into tabelnavn(xxx) values('yyy')
select id from tabelnavn order by id desc limit 0,1
unlock tables
Avatar billede erikjacobsen Ekspert
03. februar 2003 - 23:28 #4
Det giver ikke den sidst tilføjede. Men det gør

  select last_insert_id()
Avatar billede erikjacobsen Ekspert
03. februar 2003 - 23:28 #5
og last_insert_id() virker uden låsning af tabellen.
Avatar billede websmith Nybegynder
03. februar 2003 - 23:29 #6
Eller bruge
LOCK tabelnavn
select SELECT LAST_INSERT_ID()
UNLOCK tables
Avatar billede ztyxx Nybegynder
03. februar 2003 - 23:29 #7
SELECT max(ID)FROM tabel kan også bruges
Avatar billede rasta123 Nybegynder
03. februar 2003 - 23:30 #8
mange tak for det.. Det kan jeg bruge.. Det var noget a'la select LAST_INSERT_ID() jeg søgte!
Avatar billede websmith Nybegynder
03. februar 2003 - 23:30 #9
Jeg tror kun at LAST_INSERT_ID fungerer hvis man fyrer al SQL koden af i sammen thread, dvs. uden at lukke connection til databasen.
Avatar billede caspers Nybegynder
03. februar 2003 - 23:30 #10
Rettelse til ovenstående:
select * from tabel order by ID desc limit 0,1;
hvilket giver den sidst indsatte række, id fås ved:
selet max(id) from tabel;
Avatar billede erikjacobsen Ekspert
04. februar 2003 - 00:55 #11
websmith: det er også kun i samme thread du kan låse
tabellen. Så hvorfor vælge en håbløst langsom metode,
når den smarte, hurtige og elegante, samt af designerne
planlagte, metode ligger lige for?

Der er INGEN grund til at låse tabellen for at bruge last_insert_id()
Avatar billede mufoxe Nybegynder
04. februar 2003 - 09:13 #12
Det er korrekt at last_insert_id() kun fungerer korrekt, hvis man sender den afsted i samme connection - altså open, insert, last_insert_id, close.
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