webForumDet fria alternativet

Uppdatera fler kolumner och flera olika poster

Databaser & SQL

10 svar · 367 visningar · startad av Känning

Medlem sedan jan. 2003252 inlägg
Frågan#1

Hej

Hur skriver man när man ska uppdatera flera olika poster och flera kolumner??

SQL = "UPDATE tabell SET fältnamn=fältnamn+1, fältnamn2=fältnamn2+1 WHERE id=1 '..... och hur gör jag sen?

Vill alltså uppdatera id=2 också

:q

Medlem sedan mars 2003772 inlägg
#2

Du kan använda BETWEEN

UPDATE tabell SET fältnamn=fältnamn+1, fältnamn2=fältnamn2+1 WHERE id BETWEEN 1 AND x

Är det ej mellan 2 ID'n så kan du "troligtvis" använda OR

UPDATE tabell SET fältnamn=fältnamn+1, fältnamn2=fältnamn2+1 WHERE id = 1 or ID = 2
Medlem sedan jan. 2003252 inlägg
#3

Nja, men jag menade mer uppdatera 2 fält where id = 1
sedan uppdatera två ändra fält där id är något annat.

Typ:

UPDATE tabell SET fältn1=fältn1+1 WHERE id=1, SET fältn2=fältn2+1 WHERE id=7

Min fråga är alltså om detta går att uppdatera olika fält från olika poster i samma sql-sats och i så fall hur skriver man det med "set" och kommatecken osv.

Medlem sedan dec. 200012 464 inlägg
#4
UPDATE tabell 
SET 
fältn1 =  case when id = 1 then fältn1 + 1 else fältn1 end,
fältn2 =  case when id = 7 then fältn2 + 1 else fältn2 end
WHERE id in (1,7)

fungerar bra i de flesta dbms (dock ej Access där man får använda iif istället).

Medlem sedan jan. 2003252 inlägg
#5

Givetvis har jag en accessdatabas :(

Medlem sedan dec. 200012 464 inlägg
#6
UPDATE tabell 
SET 
fältn1 =  iif(id = 1,fältn1 + 1,fältn1),
fältn2 =  iif(id = 7,fältn2 + 1,fältn2)
WHERE id in (1,7)
Medlem sedan jan. 2003252 inlägg
#7

:r

Hänger faktiskt inte riktigt med i koden måste jag säga men jag ska testa när jag kommer hem om ngn timme. Tack för hjälpen, jag hör av mig ikväll om jag inte får ihopa det...

Medlem sedan jan. 2003252 inlägg
#8

Jag får inte ihop det :(

Finns det någon bra guide man kan läsa här på nätet?

Man vill ju gärna försöka få ihop det själv....

Medlem sedan dec. 20003 887 inlägg
#9

Varför fungerade inte LarsGs metod? Fick du något felmeddelande?

Medlem sedan mars 20034 471 inlägg
#10

LarsG skrev:

UPDATE tabell
SET
fältn1 = iif(id = 1,fältn1 + 1,fältn1),
fältn2 = iif(id = 7,fältn2 + 1,fältn2)
WHERE id in (1,7)

Är det så att LarsGs variant funkar, men du förstår den inte? :q

I så fall:

iif(villkor, om_sant_gör_detta, annars_gör_detta)

Dvs om id = 1 eller id=7 så görs två saker, annars inga.
fältn1 kommer att bli ett större om id = 1, annars sätts den till det värde den hade från början - alltså ingen ändring.
fältn2 kommer att bli ett större om id = 7, annars sätts den till det värde den hade från början - alltså ingen ändring.

Medlem sedan jan. 2003252 inlägg
#11

Har haft lite strul med min burk, men nu är jag tillbaka på banan igen och visst funkar det som LarsG skrev

:)

270 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)