PDA

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



saeed_rezaei
پنج شنبه 01 آذر 1386, 11:32 صبح
با سلام
یه مشکل واسم پیش اومده، با برنامه نویسی توی وی بی می تونم حلش کنم اما می خوام بااستفاده از قابلیهای اس کیو ال حلش کنم
رکوردهایی یکی از جداولم، بدون استثناء duplicate شدن. با وجود اینکه یکی از فیلدها رو premiry key زده بودم اما از این حالت خارج شده و تمام رکوردها عینا دوتا شدن.
حالا می خوام رکوردهای تکراری رو حذف کنم. اما چون هر رکوردی عینا یه کپی داره و از طرفی تعداد رکوردها زیاده ، لذا می خواستم از دوستان راهنمایی بگیریم که چطوری می شه این مشکل رو حل کرد.

پیشاپیش از وقتی که می زاین ممنونم.

MohammadSoft
جمعه 02 آذر 1386, 01:29 صبح
سلام دوست عزیز
این راه رو امتحان کنید .
به جدولتون یک اولیه ( PK ) از نوع INT به صورت IDENTITY اضافه کنید (در مثال من نام این فیلد NEWPK هست ) سپس دستورات زیر رو اجرا کنید .
من فرض کردم که نام فیلدی که رکوردهای تکراری داره رو فرض کردم که ID باشه .


DECLARE CUR CURSOR FOR SELECT ID FROM TABLE_1 GROUP BY ID
DECLARE @ID INT
OPEN CUR
FETCH NEXT FROM CUR INTO @ID
WHILE @@FETCH_STATUS = 0
BEGIN
DELETE FROM Table_1 WHERE NEWPK NOT IN
(SELECT TOP 1 NEWPK FROM Table_1 WHERE ID = @ID ) AND ID = @ID
FETCH NEXT FROM CUR INTO @ID
END
CLOSE CUR
DEALLOCATE CUR

پیروز باشید .

SYNDROME
جمعه 02 آذر 1386, 07:01 صبح
می توانی یک جدول دیگر مشابه این جدول به سازی و سپس با یک دستور Insert همه آنها به جزء تکراری ها اضافه کنید و سپس رکوردها اول را حذف کنید و سپس همه را دوباره برگردانید.
موفق باشید