بتاريخ: 18 أبريل 200817 سنة comment_126937 السلام عليكم ورحمة الله وبركاتهالسؤال ده مهم وجميل في نفس الوقتاذا كان في تيبل كالاتيNames ID N --- ---- 1 as 1 as 1 as 2 db 2 db 2 db 2 db 2 db وهذا الجدول ليس به برايمري كي او يونيك ...فكيف نستطيع حذف المكرر بحيث تصبح النتيجة بعد جملة الدليت كالاتيID N --- ---- 1 as 2 db مع أطيب التمنيات بالتوفيق تقديم بلاغ
بتاريخ: 20 أبريل 200817 سنة comment_127010 بسم الله الرحمن الرحيميمكن عمل هذا عن طريق تخليق جدول آخر وتأخد فيه القيم مع عدم التكرار . create table tab_name2 as select distinct id_n from tab_name1 تقديم بلاغ
بتاريخ: 20 أبريل 200817 سنة comment_127023 فكيف نستطيع حذف المكرر اى اننا لن نقوم بعمل جدول اخر . و من ثم فسوف نقوم الأن ببناء الجدول و اضافة البيانات .... ثم نكتب الكود الذى سيحذف القيم المكرره ...... كالتالى :-create table t1 ( id number , N varchar2(11)); insert into t1 values (1,'as'); insert into t1 values (1,'as'); insert into t1 values (1,'as'); insert into t1 values (1,'as'); insert into t1 values (2,'db'); insert into t1 values (2,'db'); insert into t1 values (2,'db'); insert into t1 values (2,'db'); commit; و هذا هو الكود الذى سيحذف القيم المكرره :- DELETE FROM t1 a WHERE a.ROWID > ANY (SELECT b.ROWID FROM t1 b WHERE a.ID = b.ID AND a.n = b.n); و الناتج سيكون :- SQL> select * from t1; ID N ---------- ----------- 1 as 2 db و بالتوفيق للجميع تقديم بلاغ
بتاريخ: 25 أبريل 200817 سنة comment_127390 Also, you can use this: DELETE FROM test WHERE rowid not in (SELECT SUM(rowid) FROM test GROUP BY id) تقديم بلاغ
بتاريخ: 25 أبريل 200817 سنة comment_127396 أخى العزيز Slamontyشكراً لمشاركتك ..... و لكن انا لا اعرف اذا كنت قمت بتجريب كودك قبل وضعه فى المنتدى ام لا ..... لأن الكود لم ينفع معى .... فبعد تجريب كودك على مثالى ( طبعاً بأستبدال جدول ال test الذى ذكرته بكودك بجدول ال t1 الذى كتب بكودى به فى المشاركة السابقة ) و كانت هذه هى النتيجة :- SQL> DELETE FROM t1 WHERE rowid not in (SELECT SUM(rowid) FROM t1 GROUP BY id); DELETE FROM t1 WHERE rowid not in (SELECT SUM(rowid) FROM t1 GROUP BY id) * ERROR at line 1: ORA-00932: inconsistent datatypes: expected NUMBER got ROWID that's allhave a nice day تقديم بلاغ
بتاريخ: 25 أبريل 200817 سنة comment_127402 Thank you for your attention,I am sorry for the mistake,kindly, change the SUM function to MAX or MIN in the code, it will work well in shaa allah DELETE FROM t1 WHERE rowid not in (SELECT MAX(rowid) FROM t1 GROUP BY id); تقديم بلاغ
بتاريخ: 26 أبريل 200817 سنة comment_127453 DELETE FROM t1 WHERE ROWID NOT IN (SELECT MAX (ROWID) FROM t1 GROUP BY ID); 6 rows deleted. SQL> SELECT * FROM t1; ID N ---------- ----------- 1 as 2 db working great ...... thanks a lot for your participation تم تعديل 16 سبتمبر 200817 سنة بواسطة hanyfreedom تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.