PDA

View Full Version : یه کد می خوام برای حذف رکوردهای تکراری



mpmsoft
چهارشنبه 15 اسفند 1386, 12:24 عصر
دوستان من چطوری می تونم با یک دستور رکوردهای تکراری رو حذف کنم

samispeed
چهارشنبه 15 اسفند 1386, 12:41 عصر
delete from T1 from tblbar T1, tblbar T2 where(T1.mname = T2.mname) and T1.id > T2.id

در این قسمت tblbar اسم جدول شماست که از آن 2 تا اسم در نظر گرفتید و mname هم اسم فیلدی که تکراری است و با استفاده از id یا primary key می توانید آنها را حذف کنید

mpmsoft
چهارشنبه 15 اسفند 1386, 13:30 عصر
دوست عزیز این کد Delete نمی کنه

samispeed
چهارشنبه 15 اسفند 1386, 16:07 عصر
دقت کنید اگر درست استفاده کنید کار می کند من از همین کد استفاده می کنم
چه خطایی می دهد

Elham_gh
چهارشنبه 15 اسفند 1386, 16:36 عصر
اینم یه راه برای جداولی که کد unique ی مثل ID نداره:
(f1 فیلدی که می خواهید بر مبنای اون رکوردهای تکراری رو پیدا کنید. حالا اگه چند تا فیلد باشه میشه f1,f2,....)


ALTER TABLE tbl1 add rowid int identity(1,1)


delete from tbl1
where rowid not in
(select min(rowid)
from tbl1
group by f1)

ALTER TABLE tbl1 DROP COLUMN rowid

nima_dir
چهارشنبه 15 اسفند 1386, 20:25 عصر
سلام دوستان
اینم یه راه حل یه استور مینویسم اول بیاد با استفاده از این دستوری شبیه دستور زیر


select distinct c1,c2,... into tbl2 from dbo.tbl1

بیاد رکوردهای غیر تکراری رو بریزه تو یه جدول دیگه بعد هم جدول فعلی رو حذف و جدول جدید را به اسم جدول قبل rename کنه