الانتقال إلى المحتوى
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

بتاريخ:

هل هناك إستعلام يحذف السجلات المتكررة
بحيث يحذف السجل المتكرر فقط
فلو كان هناك سجل متكرر
1925 ادارة بيانات جيد
1925 ادارة بيانات جيد
فبعد الأستعلام يكون هناك سجل واحد فقط
1925 ادارة بيانات جيد

بتاريخ:

لا بد من وجود Primay Key لتمييز السجلات المطلوب حذفها
مثال إذا افترضنا ان الجدول Tو اسماء الحقول كالتالي
DESC- F1- id
------------------------
1 1925 ادارة بيانات جيد
2 1925 ادارة بيانات جيد

بالتالي يمكن حذف جميع السجلات المكرره والبقاء علي سجل واحد فقط كالتالي
delete from T where id in(select id from T where id not in
(select min(id) from T group by F1))

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

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

شكرا ياbogii
ولكن الى الان لم أعرف طريقة عمل الاستعلام
اذا ممكن تشرح عمل الاستعلام أكون لك من الشاكرين

بتاريخ:

اليك الشرح

الجزء الرئيسي في الاستعلام عمل select لل IDs للسجلات المطلوب الاحتفاظ بها وعدم ومسحها وهي سجل واحد من كل مجموعه مكرره
select min(id) from T group by F1
حيث ان F1 هو اسم الحقل الذي يتم تكراره وهوا كما ذكرت في مثالك= 1925


ثم يأتي بقية الاستعلام بحذف كل السجلات من الجدول فيما عدا من بها IDs التي تحتوي علي سجلات غير مكرره والتي حصلنا عليها من الخطوه
السابقه
delete from T where id in(select id from T where id not in
(select id from T where id not in(select min(id) from T group by F1))

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

شكرا جزيلا لك على مساعدنك وتجاوبك معي يا غالي
بس الاستعلام لم يحذف أي سجل
لا أدري لماذا؟

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

بتاريخ:

delete from tb
where (num,desc) in 
(select num,desc
from tb
minus
select distinct num,desc
from tb);


حيث num,desc هما السجلات المراد حذف التكرار فيهم ........

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

يا أخي m_nasef
أيضا الكود لم يعمل

بتاريخ:

السلام عليكم

==========
لحذف السجلات المكررة
اعتقد انى قد رأيت هذه المشاركة من قبل
ولكن مش متذكر
==========
المهم
خد الطريقة دى وان شاء الله تشتغل

DELETE FROM my_table 
WHERE ROWID NOT IN (SELECT MIN(ROWID) 
                      FROM my_table 
                     GROUP BY delete_col_name);
Ex:-
delete duplicate row of emp table that have the same empno

DELETE FROM emp 
 WHERE ROWID NOT IN (SELECT MIN(ROWID) FROM emp GROUP BY empno);



وبالتوفيق للجميع
:P :D

بتاريخ:

DELETE "table name"
WHERE  rowid In( SELECT LEAD(rowid) OVER (PARTITION BY  "coloumn name" ORDER BY rowid )
FROM   "table name" );

بتاريخ:

السلام عليكم
اظن انه يمكن استخدام التالي
مثلا لخدف صف متكرر ف جدول الـ Emp
Name Id
1925 مرسي محمد
1925 مرسي محمد
يمكن عمل التالي
delete from emp M
where id in ( select id
from emp
where (select count(*) from emp
where id = M.id) >1

و هجربها ان شاء الله وارد عليكو
لأني اظن ان كمان فيه طريقة اسرع من الـ subquery دي
و شكرا

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

بتاريخ:

إليك هذا الاستعلام البسيط


<delete from <table_name a
where rowid < (select max(rowid) from <table_name b> where a.<column_name> = b.<column_name > ); f

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

شكرا لكم جميعا على هذه الحلول الرائعة والتي أدت الى النتيجة المطلوبة

بتاريخ:

فى الاستعلام السابق
---------------------
DELETE "table name"
WHERE rowid In( SELECT LEAD(rowid) OVER (PARTITION BY "coloumn name" ORDER BY rowid )
FROM "table name" );
---------------------
ما معنى PARTITION BY / OVER / LEAD ؟؟؟؟

  • بعد 3 سنة...
بتاريخ:

كود سهل و بسيط جزاكم الله خيرا

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

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

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

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

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

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.