View Full Version : حذف رکوردهای تکراری
sonicuser
سه شنبه 11 اسفند 1394, 03:38 صبح
سلام دوستان
عرض کنم که :گیج: یک دیتابیس دارم که حدود 12 -13 هزارتا رکورد داره . حالا من میخوام یجوری رکوردهایی که مثلا فیلد شمارشون تکراری هست رو حذف کنم
دوستان گلم کسی میتونه ی کدی چیزی بده که اینکارو انجام بده؟؟:قلب:
sonicuser
سه شنبه 11 اسفند 1394, 05:44 صبح
هیچ راهی نداره؟؟؟:متفکر:
parsdarab
چهارشنبه 12 اسفند 1394, 12:44 عصر
سلام
فرض کنید جدول زیر را داریم
139380
ما می خواهیم رکوردهای تکراری ستون Fname را حذف کنیم
برای این کار باید مراحل زیر را انجام دهید.
ابتدا یک ستون به جدول اضافه کنید با استفاده از دستور زیر
alter table personel1
add RepeatRecord bit null
بعد باید رکوردهای تکراری را پیدا کنید و مقدار فیلد RepeatRecord را اپدیت کنید
update A
set RepeatRecord=1
from
(
Select row_number() over (partition by Fname order by Fname ) AS SrNo,* from personel1
)A
where A.SrNo>1
دستور بالا رکوردهای تکراری بر اساس فیلد Fname را پیدار کرده و انهایی که بیش از یکبار تکار شده اند مقدار 1 را در فیلد RepeatRecord تنظیم می کند.
حالا برای حذف رکورد های تکراری
از دستور زیر استفاده کنید
delete from Personel1 where RepeatRecord =1
a.k.programer
چهارشنبه 12 اسفند 1394, 15:07 عصر
سلام و خدا قوت
امیدوارم کد زیر بدردت بخوره
فرض کنید که یه جدول به نام پرسن داریم که 4 تا ستون داره به نامهای Id,FName,LastName,TarikhTavalod که آیدی کلی هست و آیدینتیتی آیدی هم yes باشه و همچنین فرض کنید که می خواهیم ستونهایی که LastName آنها یکی است را حذف کنیم
ابتدا یه select می زنیم و رکوردهایی که LastName آنها یکی است را بدست می آوریم بعد می زاریم توی شرط دستور Delete به کد زیر توجه کنید
Delete Person where LastName In (SELECT LastName
FROM Person
GROUP BY LastName
HAVING ( COUNT(LastName) > 1 ))
rezashaban
پنج شنبه 13 اسفند 1394, 03:08 صبح
سلام دوست من
میخوای از اون رکوردهایی که تکزاری هستن خداقل یکی توی جدول بمونه با نه همش حذف بشه؟
sonicuser
پنج شنبه 13 اسفند 1394, 12:56 عصر
سلام دوست من
میخوای از اون رکوردهایی که تکزاری هستن خداقل یکی توی جدول بمونه با نه همش حذف بشه؟
سلام دوست عزیز .. خیر میخوام یکیش بمونه اما بقیه حذف بشن .. و اون فیلدی هم که میخوام تکراری بودنش چک بشه شماره تلفن هستش:قلب:
sh_esharif
سه شنبه 03 فروردین 1395, 06:04 صبح
سلام
برای حذف ردیف های تکراری از RowNumber استفاده کنید و Partition By اون رو ستون شماره تلفن بدید. بعد این رو select داخلی قرار بدید و همه ردیف هایی که ستون ردیف اونها مخالف 1هست رو پاک کنید اگه تو نوشتنش مشکل دارید بگید تا براتون کدش رو بنویسم.
موفق باشید.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.