Keresés

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

  • nyunyu

    félisten

    válasz Magnat #5510 üzenetére

    Javaslom a szabványos merge szintaxis tanulmányozását.

    Sok fejfájástól megment, ha több tábla joinja alapján kell updatelni egy táblát...

    Egyébként már az updateedet sem értem, miért kéne többször lefutnia az alselectnek, ha egyre limitáltad a visszaadható eredmény számát?
    Meg a join feltétel is kompletten hiányzik, ami alapján leválogatnád, hogy melyik rossz sorhoz milyen jó partnerkód tartozna.

    Ez most pont azt csinálja, hogy leválogatja a legnagyobb partnerkódot, és annyi+1-et ráupdatel minden 200000-es sorra. :DDD

    Ezzel maximum annyit tudsz csinálni, hogy beteszed egy kurzorba az összes 200000-es sort, aztán egyesével végigiterálva rajtuk mindig eggyel nagyobb értékkel updateled őket.

    Vagy valami nagyon elborult merget írsz, ami besorszámozza a sorokat, aztán az alapján updatel:
    merge into cikktorzs_customer u
    using (select cc.id, cc.cust_partnerkod, row_number() over (order by cc.id) rn
    from cikktorzs_customer cc
    where cc.cust_partnerkod = 200000) x
    on (u.id = x.id)
    when matched
    then update set u.cust_partnerkod = x.cust_partnerkod + x.rn;

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