a5hhk بتاريخ: 26 أبريل 2006 تقديم بلاغ مشاركة بتاريخ: 26 أبريل 2006 هل هناك إستعلام يحذف السجلات المتكررة بحيث يحذف السجل المتكرر فقط فلو كان هناك سجل متكرر1925 ادارة بيانات جيد1925 ادارة بيانات جيدفبعد الأستعلام يكون هناك سجل واحد فقط1925 ادارة بيانات جيد اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
bogii بتاريخ: 26 أبريل 2006 تقديم بلاغ مشاركة بتاريخ: 26 أبريل 2006 (معدل) لا بد من وجود 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 أبريل 2006 بواسطة bogii اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
a5hhk بتاريخ: 26 أبريل 2006 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 26 أبريل 2006 شكرا ياbogiiولكن الى الان لم أعرف طريقة عمل الاستعلاماذا ممكن تشرح عمل الاستعلام أكون لك من الشاكرين اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
bogii بتاريخ: 26 أبريل 2006 تقديم بلاغ مشاركة بتاريخ: 26 أبريل 2006 اليك الشرحالجزء الرئيسي في الاستعلام عمل 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 بتاريخ: 26 أبريل 2006 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 26 أبريل 2006 (معدل) شكرا جزيلا لك على مساعدنك وتجاوبك معي يا غاليبس الاستعلام لم يحذف أي سجللا أدري لماذا؟ تم تعديل 26 أبريل 2006 بواسطة a5hhk اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
m_nasef بتاريخ: 26 أبريل 2006 تقديم بلاغ مشاركة بتاريخ: 26 أبريل 2006 delete from tb where (num,desc) in (select num,desc from tb minus select distinct num,desc from tb); حيث num,desc هما السجلات المراد حذف التكرار فيهم ........ اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
a5hhk بتاريخ: 26 أبريل 2006 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 26 أبريل 2006 يا أخي m_nasefأيضا الكود لم يعمل اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
llord بتاريخ: 26 أبريل 2006 تقديم بلاغ مشاركة بتاريخ: 26 أبريل 2006 السلام عليكم==========لحذف السجلات المكررةاعتقد انى قد رأيت هذه المشاركة من قبلولكن مش متذكر==========المهمخد الطريقة دى وان شاء الله تشتغل 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 أبريل 2006 تقديم بلاغ مشاركة بتاريخ: 26 أبريل 2006 DELETE "table name" WHERE rowid In( SELECT LEAD(rowid) OVER (PARTITION BY "coloumn name" ORDER BY rowid ) FROM "table name" ); اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
hany1900 بتاريخ: 27 أبريل 2006 تقديم بلاغ مشاركة بتاريخ: 27 أبريل 2006 (معدل) السلام عليكماظن انه يمكن استخدام التاليمثلا لخدف صف متكرر ف جدول الـ 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 أبريل 2006 بواسطة hany1900 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
hanospace بتاريخ: 28 أبريل 2006 تقديم بلاغ مشاركة بتاريخ: 28 أبريل 2006 إليك هذا الاستعلام البسيط <delete from <table_name a where rowid < (select max(rowid) from <table_name b> where a.<column_name> = b.<column_name > ); f اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
a5hhk بتاريخ: 29 أبريل 2006 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 29 أبريل 2006 شكرا لكم جميعا على هذه الحلول الرائعة والتي أدت الى النتيجة المطلوبة اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
m_nasef بتاريخ: 29 أبريل 2006 تقديم بلاغ مشاركة بتاريخ: 29 أبريل 2006 فى الاستعلام السابق ---------------------DELETE "table name"WHERE rowid In( SELECT LEAD(rowid) OVER (PARTITION BY "coloumn name" ORDER BY rowid )FROM "table name" );---------------------ما معنى PARTITION BY / OVER / LEAD ؟؟؟؟ اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Wise بتاريخ: 26 مايو 2009 تقديم بلاغ مشاركة بتاريخ: 26 مايو 2009 كود سهل و بسيط جزاكم الله خيرا اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.