Oracle- ում աշխատելիս որոշ գրառումների վրա կարող եք գտնել կրկնօրինակներ: Կարող եք հեռացնել կրկնօրինակ տողեր ՝ դրանք նույնականացնելով և օգտագործելով համապատասխան RowID կեղծանուն տողի հասցեն: Սկսելուց առաջ ստեղծեք պահուստային աղյուսակ, եթե գրառումը ջնջվելուց հետո տեղեկանքի կարիք ունենաք:
Քայլ
Մեթոդ 1 4 -ից. Կրկնօրինակների նույնականացում
Քայլ 1. Բացահայտեք կրկնօրինակները:
Այս օրինակում մենք նույնացնում ենք «Ալան» կրկնօրինակը: Համոզվեք, որ ջնջվող գրառումները իսկապես կրկնօրինակ են ՝ ստորև բերելով SQL:
Քայլ 2. Բացահայտեք «Անուն» վերնագրով սյունակից:
Այն դեպքում, երբ սյունակում կա «Անուն» վերնագիրը, անհրաժեշտ է «սյունակի_անունը» փոխարինել Անունով:
Քայլ 3. Նշեք մյուս սյուները:
Եթե փորձում եք տարբեր սյունակներից կրկնօրինակել, օրինակ ՝ Ալանի տարիքը ՝ անվան փոխարեն, «սյունակ_անվան» փոխարեն մուտքագրեք «Տարիք» և այլն:
ընտրեք սյունակի_անուն, հաշվել (սյունակի_անուն) աղյուսակի խմբից ըստ սյունակի_անուն `հաշվելով (սյունակի_անուն)> 1;
Մեթոդ 2 -ից 4 -ը. Միայնակ կրկնօրինակների հեռացում
Քայլ 1. Ընտրեք «անուն անուններից»:
«SQL» - ից (ստանդարտ հարցման լեզվից կարճ) հետո մուտքագրեք «ընտրել անուն անուններից»:
Քայլ 2. leteնջել կրկնվող անուններով բոլոր տողերը:
«SQL» - ից հետո մուտքագրեք «ջնջել անուններից, որտեղ անունը = 'Ալան'; Պետք է նշել, որ մեծատառերն այստեղ կարևոր են, որպեսզի այս քայլը կարողանա ջնջել «Ալան» անունով բոլոր տողերը: «SQL» - ից հետո մուտքագրեք «կատարել»
Քայլ 3. Մուտքագրեք տողեր առանց կրկնօրինակների:
Այժմ, երբ ջնջել եք բոլոր տողերը և դրանք փոխարինել «Ալան» բառերով, նորից լրացրեք մեկը ՝ մուտքագրելով «տեղադրեք անվան արժեքների մեջ (« Ալան »);.»: «SQL» - ից հետո մուտքագրեք «commit» ՝ նոր գիծ ստեղծելու համար:
Քայլ 4. Դիտեք նոր ցուցակը:
Վերոնշյալ քայլերն ավարտելուց հետո կարող եք ստուգել `համոզվելու համար, որ այլևս կրկնվող գրառումներ չկան` մուտքագրելով «անուններից ընտրեք *»:
SQL> անուններից ընտրեք անուն; ԱՆՎԱՆՈՄԸ ------------------------------ Ալան Սիտրա Թոմի Ալան Բարիսն ընտրված է: SQL> ջնջել անուններից, որտեղ անունը = 'Ալան'; Տողը ջնջված է: SQL> պարտավորություններ; / Պարտքն ավարտված է: SQL> տեղադրեք անունների արժեքներ («Ալան»); տողը ստեղծվել է: SQL> պարտավորություններ; Պարտավորությունն ավարտված է: SQL> ընտրեք * անուններից; ԱՆՎԱՆՈՄ ------------------------------ Ալան Սիտրա Թոմի տողերն ընտրված են:
Մեթոդ 3 4 -ից. Բազմաթիվ կրկնօրինակների հեռացում
Քայլ 1. Ընտրեք RowID- ը, որը ցանկանում եք ջնջել:
«SQL» - ից հետո մուտքագրեք «select rowid, name from names;.»
Քայլ 2. Հեռացրեք կրկնօրինակները:
«SQL» - ից հետո մուտքագրեք «ջնջել անուններից a where rowid> (ընտրել min (rowid) անուններից b որտեղ b.name = a.name);" կրկնօրինակները հեռացնելու համար:
Քայլ 3. Ստուգեք կրկնօրինակների առկայությունը:
Վերոնշյալ քայլերն ավարտելուց հետո ստուգեք կրկնօրինակների առկայությունը `մուտքագրելով" select rowid, name from names; " ապա «կատարել»:
SQL> ընտրել rowid, անուն անուններից; ROWID NAME ------------------------------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAB Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAdfOAAD Tom AABJnsAAGAAAdfOAAF Ալանի տողերն ընտրված են: SQL> ջնջել a անուններից a rowid> (ընտրել min (rowid) անուններից b որտեղ b.name = a.name); տողերը ջնջված են: SQL> ընտրել rowid, անուն անուններից; ROWID NAME ------------------------------------------------------ AABJnsAAGAAAdfOAAA Ալան AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Թոմի տողերն ընտրված են: SQL> պարտավորություններ; Պարտավորությունն ավարտված է:
Մեթոդ 4 -ից 4 -ը. Տողերի ջնջում ըստ սյուների
Քայլ 1. Ընտրեք տողը:
«SQL» - ից հետո մուտքագրեք «ընտրել * անուններից;» կարողանալ տեսնել գիծը:
Քայլ 2. Հեռացրեք կրկնվող տողերը `նույնացնելով դրանց սյուները:
«SQL» - ից հետո «մուտքագրեք» անուններից ջնջեք a rowid> (ընտրեք min (rowid) անուններից b որտեղ b.name = a.name և b.age = a.age); " կրկնօրինակ գրառումները հեռացնելու համար:
Քայլ 3. Ստուգեք կրկնօրինակների առկայությունը:
Վերոնշյալ քայլերն ավարտելուց հետո մուտքագրեք «ընտրեք * անուններից;» ապա «պարտավորվել» տեսնել ՝ արդյոք կրկնօրինակներն իրականում հանվե՞լ են:
SQL> ընտրեք * անուններից; ԱՆՎԱՆ ՏԱՐԻՔ ---------------------------------------------- Ալան 50 Citra 51 Tomi 52 Ալան 50 տողեր են ընտրված: SQL> ջնջել a անուններից a rowid> (ընտրել min (rowid) անուններից b որտեղ b.name = a.name և b.age = a.age); տողը ջնջված է: SQL> ընտրեք * անուններից; ԱՆՎԱՆ ՏԱՐԻՔ ---------------------------------------------- Alan 50 Citra 51 Tomi 52 տող ընտրված. SQL> պարտավորություններ; Պարտավորությունն ավարտված է:
Գուշացում
-
Ստեղծեք կրկնօրինակ աղյուսակ ձեր մուտքի մեջ, որպեսզի այն կարող է օգտագործվել որպես բովանդակության հղում, երբ ոչ մի տվյալ չի ջնջվել (հարցերի դեպքում):
SQL> ստեղծել աղյուսակ alan.names_backup որպես անուններից ընտրված *; Աղյուսակ ստեղծվեց: