الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

سؤال في خذف القيم المكرره

Featured Replies

بتاريخ:

السلام عليكم ورحمه الله وبركاته
كنت عاوز اعرف شرح الطريقه دي لاني مش فاهم معناها ايه بصراحه في حذف القيم المكرره من الجدول
يعني نفترض اننا كرريتنا جدول كالاتي

create table emp (val_1 int,val_2 int,val_3 int)



insert into emp values (1,2,3)


وكررناها مثلا اي عدد
دلوقت لو جربنا الطريقه دي فعلا هتمسح القيم المكرره وتسيب raws واحد بس فيه القيم 1و2و3

delete from emp where rowid <> ( select max(rowid)
                       from emp a
                      where a.val_1 = emp.val_1 and a.val_2 = emp.val_2 and a.val_3 = emp.val3 )


ممكن شرح ليها

ممكن بطريقه تانيه وانا عرفها اللي هي

delete from emp where (rowid, val_1) not in (select min(rowid), val_1 from emp group by val_1);

تم تعديل بواسطة waleed.ita

بتاريخ:
  • كاتب الموضوع

ايه يا جماعه محدش عارف ولا مستخسرين تشرحوها

بتاريخ:
السلام عليكم ورحمه الله وبركاته
كنت عاوز اعرف شرح الطريقه دي لاني مش فاهم معناها ايه بصراحه في حذف القيم المكرره من الجدول
يعني نفترض اننا كرريتنا جدول كالاتي
create table emp (val_1 int,val_2 int,val_3 int)



insert into emp values (1,2,3)


وكررناها مثلا اي عدد
دلوقت لو جربنا الطريقه دي فعلا هتمسح القيم المكرره وتسيب raws واحد بس فيه القيم 1و2و3

delete from emp where rowid <> ( select max(rowid)
                       from emp a
                      where a.val_1 = emp.val_1 and a.val_2 = emp.val_2 and a.val_3 = emp.val3 )


ممكن شرح ليها

ممكن بطريقه تانيه وانا عرفها اللي هي

delete from emp where (rowid, val_1) not in (select min(rowid), val_1 from emp group by val_1);




السلام عليكم...
بالنسبة للسؤال هو سؤال غير منطقي بالنسبة للمعطيات يلي حاططها.. لازم يكون في بالجدول مميز(مفتاح أساسي مثلاً) نقدر عن طريق نتحكم بالسجلات.
أما بالنسبة للحلين يلي حاططهون.. للأسف الحلين خاطئين..

delete from emp where rowid <> ( select max(rowid)
                       from emp a
                      where a.val_1 = emp.val_1 and a.val_2 = emp.val_2 and a.val_3 = emp.val3 )



هذا الحل صحيح فقط في حالة أن الجدول يحوي على نوع واحد من السجلات المكررة..يعني إذا كان الجدول يحوي على أكثر من مجموعة (1,2,3)&(4,5,6)
بيعطي نتائج خاطئة..وبدون ما تجربها مبينة..
متل مالك شايف بالكود..رح يجيب أكبر Rowid لنفس المجموعة حسب الكوريليتد و رح يحذف كلشي أصغر من هل الرقم حتى لو كان بغير مجموعة..لمّا يجي بدو يفوت بتاني كوريليتد ما حيلاقي سجلات يفحصها...

delete from emp where (rowid, val_1) not in (select min(rowid), val_1 from emp group by val_1);



كمان هاد غلط..
إذا بتحطلو مجموعتن من السجلات مشتركة بقيمة أول حقل بيحذف كل المجموعتين...
يعني جرب حطلو (1,2,3) & (1,2,4) ..
إذا كتير مضطر عليها..فيك تعملو بروسيدجر بسيط...
و السلام ختام...

تم تعديل بواسطة TROYMAN

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.