AMcoder - javascript, python, java, html, php, sql

Ինչպես թարմացնել աղյուսակի դաշտը, որը համընկնում է նույն աղյուսակի մեկ այլ գրառումների հետ

Ինչպես թարմացնել աղյուսակի դաշտը, որը համընկնում է նույն աղյուսակի մեկ այլ գրառումների հետ:

UPDATE XXXRLES
    SET BIZCAT05 = 'S'
    WHERE ( SELECT A.* FROM XXXRLES A, XXXRLES B
                    WHERE
                        A.BIZFLD = B.BIZFLD
                        AND A.BIZOBJ = B.BIZOBJ
                        AND A.BIZRUL = B.BIZRUL
        );

Ես պետք է թարմացնեմ BIZCAT05 դաշտը XXXRLES աղյուսակի «S»-ով, եթե և միայն այն դեպքում, եթե 2 գրառումներ ունեն նույն արժեքները հետևյալ 3 դաշտերի համար, ինչպես.

BIZFLD 
BIZOBJ
BIZRUL

Ինչպե՞ս կատարել այս հարցումը:

08.02.2012

  • Աղյուսակը XXXRLES ունի՞ առաջնային բանալի: իսկ անունը ինչ է 08.02.2012
  • Առաջնային բանալին չկա: 08.02.2012
  • Եթե ​​ձեր RDBMS-ը Oracle-ն է, ապա իմ պատասխանը կարող է աշխատել: 08.02.2012

Պատասխանները:


1

Ես ենթադրեցի, որ ձեր RDBMS-ը Oracle-ն է, երբ մեկնաբանությունում նշել եք ROWIDը:

UPDATE A SET
    BIZCAT05 = 'S'
FROM XXXRLES A
JOIN XXXRLES B ON
    A.BIZFLD = B.BIZFLD
    AND A.BIZOBJ = B.BIZOBJ
    AND A.BIZRUL = B.BIZRUL
    AND A.ROWID <> B.ROWID

կամ օգտագործելով exists (որը, վերջապես, ինձ համար ավելի պարզ է թվում):

UPDATE A SET
    BIZCAT05 = 'S'
FROM XXXRLES A
WHERE EXISTS (SELECT 1 
    FROM XXXRLES B
    WHERE A.BIZFLD = B.BIZFLD
    AND A.BIZOBJ = B.BIZOBJ
    AND A.BIZRUL = B.BIZRUL
    AND A.ROWID <> B.ROWID
)

Ավելացվել է մեկնաբանությունից հետո.

Ես ծանոթ չեմ DB2-ին, բայց կարող եք փորձել.

UPDATE XXXRLES A SET
    BIZCAT05 = 'S'
WHERE EXISTS (SELECT 1 
    FROM XXXRLES B
    WHERE A.BIZFLD = B.BIZFLD
    AND A.BIZOBJ = B.BIZOBJ
    AND A.BIZRUL = B.BIZRUL
    AND A.ROWID <> B.ROWID
)
08.02.2012
  • ԻՄ RDBMS-ը DB2 է: Երկու հարցումներն էլ չեն աշխատում Թարմացման հարցման մեջ FROM հիմնաբառի անվավեր շարահյուսության պատճառով... 08.02.2012
  • Powage, Now Query, եթե լավ է, բայց DB2-ը չի աջակցում ROWID/ROWNUM դաշտերը...հետևաբար հարցումը չի աշխատում 08.02.2012
  • @Kishore Դուք ունե՞ք որևէ դաշտ կամ դաշտերի հավաքածու, որը տարբերում է տողը տողից: Դրա համար ես հարցրել եմ PK-ի կամ ID-ի ինչ-որ դաշտի մասին: 08.02.2012
  • @Powage, նման տեսակի դաշտ չկա։ Կարծում եմ, որ անհրաժեշտ է ստեղծել PK տիպի ֆայլ, այնուհետև սա կաշխատի… Ամեն դեպքում, շատ շնորհակալություն 08.02.2012

  • 2

    Դուք կարող եք օգտագործել RID() Row Identifier-ի ներկառուցված գործառույթը՝ եզակի տողը նույնականացնելու համար: UPDATE հարցումը կարող է գրվել հետևյալ կերպ.

    UPDATE XXXRLES A 
    SET BIZCAT05 = 'S'
    WHERE EXISTS (SELECT 1 
                  FROM XXXRLES B
                  WHERE A.BIZFLD = B.BIZFLD
                    AND A.BIZOBJ = B.BIZOBJ
                    AND A.BIZRUL = B.BIZRUL
                    AND RID(A) <> RID(B)
                  )
    

    Խնդրում ենք գտնել RID() ֆունկցիայի մասին լրացուցիչ տեղեկություններ IBM DB2 տեղեկատվական կենտրոնում: http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/index.jsp?topic=%2Fcom.ibm.db2z10.doc.sqlref%2Fsrc%2Ftpc%2Fdb2z_bif_rid.htm

    08.02.2012
  • @ Deepa, Հարցումն աշխատելիս ստացեք սխալ. Աղյուսակի նշանակիչը A-ն վավեր չէ արտահայտության համար: SQLSTATE=42703 Ցանկացած գաղափար դրա մասին 09.02.2012
  • @Kishore Կարո՞ղ եք փորձել A-ի փոխարեն աղյուսակի անունը: ԹԱՐՄԱՑՆԵԼ XXXRLES SET-ը BIZCAT05 = 'S' WHERE EXISTS (Ընտրեք 1-ը XXXRLES B-ԻՑ ՈՐՏԵՂ XXXRLES.BIZFLD = B.BIZFLD ԵՎ XXXRLES.BIZOBJ = B.BIZOBJ ԵՎ XXXRLES.BIZRUL = B.BIZRUL ANDRLID(RIDRLES) )) 09.02.2012

  • 3

    Վստահ չեմ, որ դուք ճիշտ հասկացաք, փորձեք սա

    UPDATE XXXRLES SET BIZCAT05 = 'S' WHERE XXXRLES.ID in
     ( SELECT A.ID FROM XXXRLES A,        XXXRLES B
       WHERE A.BIZFLD = B.BIZFLD AND A.BIZOBJ = B.BIZOBJ AND A.BIZRUL = B.BIZRUL); 
    
    08.02.2012
  • Սխալ՝ ID-ն աղյուսակի սյունակ չէ: 08.02.2012
  • Ես նաև փորձեցի այս հարցումը UPDATE XEXBIZRLES SET BIZCAT05 = 'S' WHERE XEXBIZRLES.ROWID in ( SELECT A.ROWID FROM XEXBIZRLES A, XEXBIZRLES B ՈՐՏԵՂ A.BIZFLD = B.BIZFLD AND A.BIZOBJ = B.BIZOBJOR Բ.ԲԻԶՐՈՒԼ) . Բայց այն թարմացրել է աղյուսակի բոլոր գրառումները։ 08.02.2012
  • Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..