Új hozzászólás Aktív témák

  • Magnat
    veterán

    Hja, ha SQL Servert használsz akkor próbálkozhatsz az archaikus Teradata upsert szintaxissal is, hátha megeszi:
    (Elvileg 2008R2-vel próbálták átcsábítani a Teradata DWH júzereit, aztán a legacy kód migráció megkönnyítésére implementálták a Teradata szintaxisát is.)

    update cc
    set cc.cust_partnerkod = cc.cust_partnerkod + x.rn
    from cikktorzs_customer cc,
    (select id, row_number() over (order by id) rn
    from cikktorzs_customer
    where cust_partnerkod = 200000) x
    where cc.id = x.id;

    (Hmm, MS csak a SET és a WHERE között engedi a FROM utáni tábla felsorolást? Teradatában a SET elé is lehetett írni, sőt legtöbbször úgy írták.)

    De a feljebb írt mergenek biztosan működnie kéne, az a több táblát összefésülő műveletek szabványos írásmódja.
    FROM clause nagyon nem szabványos az update szintaxisokban, nem sok DB ismeri, kezeli.
    (Oracle alatt meg se próbáld!)

    Köszi, közben meglett, sokkal egyszerűbb mint gondoltam:

    SET @row_number = 1;
    UPDATE cikktorzs_customer SET `cust_partnerkod` = 200000 + (@row_number := 1 + @row_number)
    WHERE cust_partnerkod = 200000

Új hozzászólás Aktív témák