هنگام کار در Oracle ، ممکن است متوجه شوید که برخی از سوابق شما دارای موارد تکراری است. می توانید این ردیف های تکراری را با شناسایی و استفاده از RowID یا آدرس سطر آن حذف کنید. قبل از شروع ، باید یک جدول پشتیبان تهیه کنید تا درصورت نیاز به مرجع آنها پس از حذف پرونده ها ، اقدام کنید.
مراحل
روش 1 از 4: شناسایی نسخه تکراری خود
مرحله 1. موارد تکراری را شناسایی کنید
در این مورد ، نمونه تکراری ، "آلن" را مشخص کنید. با وارد کردن SQL زیر مطمئن شوید که رکوردهایی که می خواهید حذف کنید در واقع تکراری هستند.
مرحله 2. شناسایی از ستونی به نام "نام ها
"در مورد ستونی به نام" نام ها "،" ستون_نام "را با نام ها جایگزین می کنید.
مرحله 3. شناسایی از ستون های دیگر
اگر سعی می کردید ستون تکراری را با ستون دیگری ، به عنوان مثال سن آلن و نه نام او ، شناسایی کنید ، "Ages" را به جای "name_name" و غیره وارد می کنید.
نام ستون ، تعداد (نام ستون) را از گروه جدول بر اساس نام ستون با تعداد (نام ستون)> 1 انتخاب کنید ؛
روش 2 از 4: حذف یک نسخه تکراری
مرحله 1. "name from names" را انتخاب کنید
"بعد از" SQL "که مخفف عبارت Standard Query Language است ،" select name from names "را وارد کنید.
مرحله 2. حذف همه سطرها با نام تکراری
پس از "SQL" ، "delete" delete from names where name = 'Alan' ؛. " توجه داشته باشید که بزرگنمایی در اینجا مهم است ، بنابراین با این کار همه سطرهایی با نام "آلن" حذف می شود. پس از "SQL" ، "commit" را وارد کنید.
مرحله 3. ردیف را بدون کپی اجاره دهید
اکنون که همه ردیفها را با نام مثال "آلن" حذف کرده اید ، می توانید با وارد کردن "insert into names name ('Alan')؛". " پس از "SQL" ، "commit" را وارد کنید تا سطر جدید خود ایجاد شود.
مرحله 4. لیست جدید خود را مشاهده کنید
پس از اتمام مراحل فوق ، می توانید با وارد کردن "select * from names" مطمئن شوید که دیگر سوابق تکراری ندارید.
SQL> نام را از بین نام ها انتخاب کنید. NAME ------------------------------ ردیف های آلن کری تام آلن انتخاب شده است. SQL> حذف از نام هایی که در آن نام = 'آلن'؛ سطرها حذف شدند SQL> انجام تعهد کامل شد SQL> قرار دادن مقادیر نام ('Alan') ؛ ردیف ایجاد شد SQL> تعهد؛ تعهد کامل شد SQL> * را از نام ها انتخاب کنید. نام ------------------------------ ردیف های آلن کری تام انتخاب شده است.
روش 3 از 4: حذف چند نسخه تکراری
مرحله 1. RowID را که می خواهید حذف کنید انتخاب کنید
پس از "SQL" ، enter "rowid، name from names ؛. را انتخاب کنید."
مرحله 2. تکراری را حذف کنید
پس از "SQL" ، "enter" را حذف کنید از نامهای a rowid> (min (rowid) را از نامهای b که b.name = a.name) انتخاب کنید ؛ " برای حذف رکوردهای تکراری
مرحله 3. موارد تکراری را بررسی کنید
پس از اتمام موارد فوق ، دستورات را با وارد کردن "select rowid، name from names؛" بررسی کنید که آیا هنوز رکوردهای تکراری دارید یا خیر. و سپس "متعهد" شوید.
SQL> rowid ، name from names را انتخاب کنید. نام ROWID ------------------ ------------------------------ AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAB Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAdfOAAD Tom AABJnsAAGAAAdfOAAF ردیف های آلن انتخاب شده است. SQL> حذف از نامهای a rowid> (min (rowid) را از نامهای b که b.name = a.name را انتخاب کنید) ؛ سطرها حذف شدند SQL> rowid ، name from names را انتخاب کنید. نام ROWID ------------------ ------------------------------ AABJnsAAGAAAdfOAAA آلن AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD ردیف های تام انتخاب شده است. SQL> تعهد؛ تعهد کامل شد
روش 4 از 4: حذف سطرها با ستون ها
مرحله 1. سطرهای خود را انتخاب کنید
پس از "SQL" ، "را انتخاب کنید * از نام؛" برای دیدن ردیف های شما
مرحله 2. حذف سطرهای تکراری با شناسایی ستون آنها
پس از "SQL" "enter" را از نامهای a rowid حذف کنید (min (rowid) را از نامهای b که b.name = a.name و b.age = a.age) را انتخاب کنید. " برای حذف سوابق تکراری
مرحله 3. موارد تکراری را بررسی کنید
پس از اتمام مراحل فوق ، "select * from names؛" را وارد کنید. و سپس "متعهد" شوید تا بررسی کنید که رکوردهای تکراری را با موفقیت حذف کرده اید.
SQL> * را از نام ها انتخاب کنید. NAME AGE ---------------------------------------- آلن 50 کری 51 تام 52 آلن 50 ردیف های انتخاب شده SQL> حذف از نامهای a rowid> (min (rowid) را از نامهای b که b.name = a.name و b.age = a.age) انتخاب کنید ؛ ردیف حذف شد SQL> انتخاب * از بین نامها ؛ NAME AGE ------------------------------ ---------- آلن 50 کری 51 تام 52 ردیف انتخاب شده است به SQL> تعهد؛ تعهد کامل شد
هشدارها
-
یک جدول پشتیبان در ورود به سیستم خود ایجاد کنید که می توانید از آن برای نشان دادن آنچه قبل از هرگونه حذف وجود داشت (در صورت وجود هر گونه سوال) استفاده کنید.
SQL> ایجاد جدول alan.names_backup به عنوان * انتخاب شده از بین نامها ؛ جدول ایجاد شد