Avatar billede zapzone Nybegynder
09. december 2007 - 18:40 Der er 6 kommentarer og
1 løsning

Slet række med laveste værdi

Jeg har en tabel personer som indeholder to felter: navn og alder.

Jeg er ude efter at slette den række som har den laveste alder.

Følgende query giver mig en fejl:

DELETE FROM personer WHERE alder = ( SELECT min( alder )
FROM personer )

Fejlen lyder:
#1093 - You can't specify target table 'personer' for update in FROM clause

Nogen der har et bud på hvad der går galt ?
Avatar billede arne_v Ekspert
09. december 2007 - 18:47 #1
Ja. Du kan ikke delete fra en tabel som du bruger i en subquery. I MySQL.
Avatar billede arne_v Ekspert
09. december 2007 - 18:48 #2
Prøv følgende hack:

DELETE FROM personer
WHERE alder = (SELECT min(alder) FROM (SELECT * FROM personer) x)
Avatar billede zapzone Nybegynder
09. december 2007 - 18:53 #3
Perfekt... :D
Hvis du lige svarer, så kan du få dine point :)
Avatar billede arne_v Ekspert
09. december 2007 - 18:56 #4
svar
Avatar billede arne_v Ekspert
09. december 2007 - 18:56 #5
Hacket er næppe godt for performance, men hvad gør ma ikke for at undgå
diverse trælse restriktioner.
Avatar billede terrak Nybegynder
09. december 2007 - 18:58 #6
Prøv:
DELETE FROM personer ORDER BY alder asc LIMIT 1
Avatar billede zapzone Nybegynder
09. december 2007 - 20:29 #7
Terrak >> Det virker også :) - Tak
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