السلام عليكم ورحمة الله وبركاته
السؤال ده مهم وجميل في نفس الوقت
اذا كان في تيبل كالاتي
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
مع أطيب التمنيات بالتوفيق

كيف أحذف القيم المكررة في جدول
تمت كتابته بواسطة
ahmedeltaiep
, April 18 2008 06:06 PM
6 رد (ردود) على هذا الموضوع
#3
تاريخ المشاركة 20 April 2008 - 09:49 AM
اى اننا لن نقوم بعمل جدول اخر .فكيف نستطيع حذف المكرر
و من ثم فسوف نقوم الأن ببناء الجدول و اضافة البيانات .... ثم نكتب الكود الذى سيحذف القيم المكرره ...... كالتالى :-
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
و بالتوفيق للجميع
#5
تاريخ المشاركة 25 April 2008 - 12:30 PM
أخى العزيز Slamonty
شكراً لمشاركتك ..... و لكن انا لا اعرف اذا كنت قمت بتجريب كودك قبل وضعه فى المنتدى ام لا ..... لأن الكود لم ينفع معى .... فبعد تجريب كودك على مثالى ( طبعاً بأستبدال جدول ال test الذى ذكرته بكودك بجدول ال t1 الذى كتب بكودى به فى المشاركة السابقة ) و كانت هذه هى النتيجة :-
that's all
have a nice day
شكراً لمشاركتك ..... و لكن انا لا اعرف اذا كنت قمت بتجريب كودك قبل وضعه فى المنتدى ام لا ..... لأن الكود لم ينفع معى .... فبعد تجريب كودك على مثالى ( طبعاً بأستبدال جدول ال 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 all
have a nice day
#6
تاريخ المشاركة 25 April 2008 - 03:42 PM
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
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);
لا إله إلا الله وحده لا شريك له له الملك و له الحمد يحيي و يميت و هو علي كل شيء قدير
#7
تاريخ المشاركة 26 April 2008 - 01:38 PM
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
تم التعديل بواسطة hanyfreedom, 16 September 2008 - 07:00 PM.