حذف ردیف های تکراری در جدول های SQL Server
به دفعات برای خیلی از ماها پیش آمده که بخواهیم سطر های تکراری در جدول های دیتابیس خود را حذف و یا به نوعی شمارش کنیم.
در این پست قصد دارم روشی رو براتون بگم که باهاش بتونید ردیف های تکراری جدول ها رو باهاش حذف کنید.
در این مثال ما یک جدول داریم به این صورت :
و مقادیری را به این صورت به جدول خود وارد میکنیم :
حال با فرمت کد زیر میتوانیم ردیف های تکراری از نظر هر فیلد را حذف کنیم
برای مثال میخواهیم ردیف های تکراری بر اساس سن را حذف کنیم (یعنی ردیف های تکراری حذف و یک مورد از آن باقی بماند چون قصد نداریم همه اطلاعات بر اساس یک سن را حذف کنیم)
-- Hypersource.ir WITH HS as ( SELECT*, ROW_NUMBER() over (PARTITION BY Age ORDER BY Age) as RowNumber FROM HyperStudents ) Delete from HS where RowNumber > 1
حال فرض کنید اگر بخواهیم بر اساس نام حذف کنیم چه ؟!
کد را باید این صورت تغییر دهیم و بجای Age از Name استفاده کنیم
-- Hypersource.ir WITH HS as ( SELECT*, ROW_NUMBER() over (PARTITION BY [Name] ORDER BY [Name]) as RowNumber FROM HyperStudents ) Delete from HS where RowNumber > 1
که خروجی کد بالا به صورت زیر میباشد :
همانطور که در تصویر هم میبینید آن سطر هایی که مقدار RowNumber آنها بیشتر از 1 هست همان ردیف های تکراری می باشد.
موفق باشید