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

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