WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Varför funkar inte denna SQL query? (https://www.wn.se/forum/showthread.php?t=1059785)

naak2803 2013-11-12 00:03

Varför funkar inte denna SQL query?
 
hej, skulle behöva lite hjälp med denna query... det jag vill göra är att köra update på flera rader samtidigt i en tabell med endast en enda query..

har testad göra så här, med det verkar inte fungera.

UPDATE jos_jms
SET blocked = '123,255,1024' WHERE userid = 992,
SET blocked = '992, 456,225' WHERE userid = 123;

Never mind... lyckade lösa detta genom

UPDATE jos_jms SET blocked = CASE
WHEN userid = 992 THEN '123,255,1024';
WHEN userid = 123 THEN '992, 456,225';
ELSE blocked
END;

nosnaj 2013-11-12 00:17

Citat:

Ursprungligen postat av naak2803 (Inlägg 20480856)
hej, skulle behöva lite hjälp med denna query... det jag vill göra är att köra update på flera rader samtidigt i en tabell med endast en enda query..

har testad göra så här, med det verkar inte fungera.

UPDATE jos_jms
SET blocked = '123,255,1024' WHERE userid = 992,
SET blocked = '992, 456,225' WHERE userid = 123;

Enklast är väl köra flera sql, men antar du har dina skäl.
Något i stil med följande kanske fungerar, ej testat koden..


UPDATE jos_jms
SET blocked = CASE
WHEN userid = 992 THEN '123,255,1024'
WHEN userid = 123 THEN '992, 456,225'
ELSE blocked END
WHERE userid IN (992,123)

pelmered 2013-11-13 09:27

Vad är det du vill åstadkomma?

Den där queryn du löste det med är ju hopplöst odynamisk när det blir lite större datasets. Man kan ju knappast peta in alla sina user IDs i den CASE-satsen.

Den där logiken bör du även hantera i ditt server side språk och inte i databasqueryn är min bestämda åsikt.


Alla tider är GMT +2. Klockan är nu 07:43.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson