Avatar billede htx98i17 Professor
09. november 2001 - 18:25 Der er 22 kommentarer og
1 løsning

WHERE id = MAX(id) ??

UPDATE tabel SET felt = felt+1 WHERE id = MAX(id)

kan man det? :) hvis ikke, hvad kan man gøre i stedet?
Avatar billede stigc Nybegynder
09. november 2001 - 18:31 #1
UPDATE tabel SET felt = felt+1 WHERE id IN (SELECT MAX(id) FROM tabel)
Avatar billede Slettet bruger
09. november 2001 - 18:34 #2
Så vidt jeg ved kan man vis ikke subselecte med MySQL?? (Det som stigc gør)
Avatar billede stigc Nybegynder
09. november 2001 - 18:37 #3
jo med den nye version. :)


Avatar billede htx98i17 Professor
09. november 2001 - 18:38 #4
dunno, jeg skal ikke bruge det til noget lige nu, jeg var bare nysgerrig

kan man så heller ik sige:
UPDATE tblpersoner SET point = point+20 WHERE point>50 ORDER BY point ASC LIMIT 20

kan man det, eller er det helt hen i vejret???
Avatar billede stigc Nybegynder
09. november 2001 - 18:39 #5
Desuden bør en sådan manøvre også gøres med transaktionstyring, hvilket den nye version også understøtter. 
Avatar billede aneez Nybegynder
09. november 2001 - 18:39 #6
hvad med 3.22 er den godnok? hehe
Avatar billede stigc Nybegynder
09. november 2001 - 18:40 #7
htx98i17>> Det er jeg ret sikker på man ikke kan!

Avatar billede htx98i17 Professor
09. november 2001 - 18:42 #8
hvad gør man så hvis man kun vil updatere de 20 personer som har mindst point?
Avatar billede htx98i17 Professor
09. november 2001 - 18:42 #9
altså jeg går ud fra at det er den ORDER BY og LIMIT som du siger ik vil virke
Avatar billede stigc Nybegynder
09. november 2001 - 18:43 #10
Den nye version er 4.0

www.mysql.com
Avatar billede mortenfn Nybegynder
09. november 2001 - 18:45 #11
der er ikke  subselecte i mysql 4
Avatar billede aneez Nybegynder
09. november 2001 - 18:45 #12
Men den er jo stadig kun ude som unstable... jeg for aldrig mit webhotel til at opdatere deres server med en mysql version der ikke er ude i stable hehe tror jeg ihvertfald ikke på :)
Avatar billede Slettet bruger
09. november 2001 - 18:47 #13
OK, tak for tippet...det gør jo livet en del nemmere for os!
Avatar billede htx98i17 Professor
09. november 2001 - 18:50 #14
hvad gør man så hvis man kun vil updatere de 20 poster/personer som har mindst point?
Avatar billede stigc Nybegynder
09. november 2001 - 18:52 #15
ok subselect er vist stadigvæk ikke kommet.

http://www.mysql.com/doc/A/N/ANSI_diff_Sub-selects.html
Avatar billede stigc Nybegynder
09. november 2001 - 18:55 #16
du laver to SQL\'er

Først select du : limit 0,20 order by DESC
Så laver du en streng af de id,er på formen

$dinstreng = \"id1, id2, id3, ........ \"


Så laver du en update med

UPDATE tabel SET felt = felt+1 WHERE id IN ($dinstreng)
Avatar billede Slettet bruger
09. november 2001 - 18:55 #17
Det så ud som om at nestede selects (subselect) kommer med i 4.1 udgaven...
Avatar billede htx98i17 Professor
09. november 2001 - 18:57 #18
dårligt at man ik kan nøjes med 1 query, hehe, synes da det ville være logisk nok, hehe
Avatar billede htx98i17 Professor
09. november 2001 - 19:00 #19
for at vende tilbage til spørgsmålet, så kan man altså KUN lave det med minimum 2 querys ?
Avatar billede codebase Praktikant
09. november 2001 - 19:56 #20
UPDATE tabel SET felt = felt+1 WHERE id = MAX(id)


er det helt sort ??

_codeb@se.dk
Avatar billede codebase Praktikant
09. november 2001 - 19:58 #21
nope det kunne man ikke :-)
UPDATE hit_hit SET hit=hit+1 WHERE id = MAX(id)
MySQL returnerede: Invalid use of group function

Avatar billede codebase Praktikant
09. november 2001 - 20:01 #22
UPDATE hit_hit SET hit=hit+1 WHERE id IN (SELECT MAX(id) FROM hit_hit)
MySQL returnerede: You have an error in your SQL syntax near \'SELECT MAX(id) FROM hit_hit)\'

MySql ver. 3.23.36

Hvad er den nyeste ??

_codeb@se.dk
Avatar billede mortenfn Nybegynder
09. november 2001 - 20:23 #23
for mig at se må du lave select først hvor du finder den største id og derefter update --- where id = den anden select
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