Autor | Zpráva | ||
---|---|---|---|
MaK Profil |
Tento dotaz:
UPDATE tab SET x = x + 1 WHERE id IN (1,2,2) inkrementuje řádek 2 (id=2) pouze 1x. Je to asi pochopitelné, ale já bych rád, aby byl inkrementovan 2x. Jak to udělat? Napadlo mě řešení, kde (1,2,2) nacpu do TEMPORARY TABLE a pak UPDATE ( SELECT id, COUNT(*) AS n FROM temporary_table GROUP BY id ) AS t JOIN tab USING (id) SET x = x + t.n ale to mi přijde dosti komplikované. Není něco jednoduššího? MaK Moderátor Kajman: Vkládej prosím kódy mezi značky [>pre] a [>/pre] (stačí kliknout na ).
|
||
Kajman Profil |
#2 · Zasláno: 8. 6. 2012, 10:30:56
Ještě by se daly vygenerovat takovéto dotazy, ale také to asi není zrovna ladné řešení...
UPDATE (SELECT 1 id FROM DUAL UNION ALL SELECT 2 id FROM DUAL UNION ALL SELECT 2 id FROM DUAL) AS t JOIN tab USING (id) SET x = x + 1 UPDATE (SELECT 1 id, 1 n FROM DUAL UNION ALL SELECT 2 id, 2 n FROM DUAL) AS t JOIN tab USING (id) SET x = x + t.n |
||
Časová prodleva: 12 let
|
0