بتاريخ: 26 أبريل 200619 سنة comment_67470 هل هناك إستعلام يحذف السجلات المتكررة بحيث يحذف السجل المتكرر فقط فلو كان هناك سجل متكرر1925 ادارة بيانات جيد1925 ادارة بيانات جيدفبعد الأستعلام يكون هناك سجل واحد فقط1925 ادارة بيانات جيد تقديم بلاغ
بتاريخ: 26 أبريل 200619 سنة comment_67484 لا بد من وجود 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)) تم تعديل 26 أبريل 200619 سنة بواسطة bogii تقديم بلاغ
بتاريخ: 26 أبريل 200619 سنة كاتب الموضوع comment_67495 شكرا ياbogiiولكن الى الان لم أعرف طريقة عمل الاستعلاماذا ممكن تشرح عمل الاستعلام أكون لك من الشاكرين تقديم بلاغ
بتاريخ: 26 أبريل 200619 سنة comment_67498 اليك الشرحالجزء الرئيسي في الاستعلام عمل 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)) تقديم بلاغ
بتاريخ: 26 أبريل 200619 سنة كاتب الموضوع comment_67502 شكرا جزيلا لك على مساعدنك وتجاوبك معي يا غاليبس الاستعلام لم يحذف أي سجللا أدري لماذا؟ تم تعديل 26 أبريل 200619 سنة بواسطة a5hhk تقديم بلاغ
بتاريخ: 26 أبريل 200619 سنة comment_67507 delete from tb where (num,desc) in (select num,desc from tb minus select distinct num,desc from tb); حيث num,desc هما السجلات المراد حذف التكرار فيهم ........ تقديم بلاغ
بتاريخ: 26 أبريل 200619 سنة comment_67542 السلام عليكم==========لحذف السجلات المكررةاعتقد انى قد رأيت هذه المشاركة من قبلولكن مش متذكر==========المهمخد الطريقة دى وان شاء الله تشتغل 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); وبالتوفيق للجميع تقديم بلاغ
بتاريخ: 26 أبريل 200619 سنة comment_67545 DELETE "table name" WHERE rowid In( SELECT LEAD(rowid) OVER (PARTITION BY "coloumn name" ORDER BY rowid ) FROM "table name" ); تقديم بلاغ
بتاريخ: 27 أبريل 200619 سنة comment_67672 السلام عليكماظن انه يمكن استخدام التاليمثلا لخدف صف متكرر ف جدول الـ EmpName Id 1925 مرسي محمد1925 مرسي محمديمكن عمل التالي delete from emp Mwhere id in ( select id from empwhere (select count(*) from emp where id = M.id) >1و هجربها ان شاء الله وارد عليكو لأني اظن ان كمان فيه طريقة اسرع من الـ subquery ديو شكرا تم تعديل 27 أبريل 200619 سنة بواسطة hany1900 تقديم بلاغ
بتاريخ: 28 أبريل 200619 سنة comment_67698 إليك هذا الاستعلام البسيط <delete from <table_name a where rowid < (select max(rowid) from <table_name b> where a.<column_name> = b.<column_name > ); f تقديم بلاغ
بتاريخ: 29 أبريل 200619 سنة كاتب الموضوع comment_67735 شكرا لكم جميعا على هذه الحلول الرائعة والتي أدت الى النتيجة المطلوبة تقديم بلاغ
بتاريخ: 29 أبريل 200619 سنة comment_67760 فى الاستعلام السابق ---------------------DELETE "table name"WHERE rowid In( SELECT LEAD(rowid) OVER (PARTITION BY "coloumn name" ORDER BY rowid )FROM "table name" );---------------------ما معنى PARTITION BY / OVER / LEAD ؟؟؟؟ تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.