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
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

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: