خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را
آموزش حذف رکوردهای تکراری در جداول SQL Server
من در این مثال یک دیتابیس بصورت دستی در SQL ایجاد کردم و سپس با استفاده کد زیر اقدام به ایجاد یک Table در دیتابیس مورد نظرم کردم:
CREATE TABLE [dbo].[ATTENDANCE](
AUTOID INT IDENTITY(1,1) ,
[EMPLOYEE_ID] [varchar](50) NOT NULL,
[ATTENDANCE_DATE] [date] NOT NULL
) ON [PRIMARY]
حال که Table ایجاد شد، با استفاده از دستور زیر چندین رکورد تکراری در آن اضافه می کنم:
INSERT INTO dbo.ATTENDANCE (EMPLOYEE_ID,ATTENDANCE_DATE)VALUES
('A001',CONVERT(DATETIME,'01-01-11',5))
INSERT INTO dbo.ATTENDANCE (EMPLOYEE_ID,ATTENDANCE_DATE)VALUES
('A001',CONVERT(DATETIME,'01-01-11',5))
INSERT INTO dbo.ATTENDANCE (EMPLOYEE_ID,ATTENDANCE_DATE)VALUES
('A002',CONVERT(DATETIME,'01-01-11',5))
INSERT INTO dbo.ATTENDANCE (EMPLOYEE_ID,ATTENDANCE_DATE)VALUES
('A002',CONVERT(DATETIME,'01-01-11',5))
INSERT INTO dbo.ATTENDANCE (EMPLOYEE_ID,ATTENDANCE_DATE)VALUES
('A002',CONVERT(DATETIME,'01-01-11',5))
INSERT INTO dbo.ATTENDANCE (EMPLOYEE_ID,ATTENDANCE_DATE)VALUES
('A003',CONVERT(DATETIME,'01-01-11',5))
اگر به جدول مربوطه نگاهی داشته باشید خواهید دید که رکوردهای تکراری در آن به وضوح مشخص هستند.
با استفاده از دستور زیر می توانید یک Group by از رکوردهای تکراری بدست آورید که بدانید از هر EMPLOYEE_ID، چند رکورد تکراری در این جدول ثبت شده است.
SELECT * FROM dbo.ATTENDANCE WHERE AUTOID NOT IN (SELECT MIN(AUTOID)
FROM dbo.ATTENDANCE GROUP BY EMPLOYEE_ID)
حالا با استفاده از دستور زیر می توانید رکوردهای تکراری را در این جدول حذف کنید.
DELETE FROM dbo.ATTENDANCE WHERE AUTOID NOT IN
(SELECT MIN(AUTOID) FROM dbo.ATTENDANCE GROUP BY EMPLOYEE_ID)
لطفا قبل از اجرای دستور به فیلد AutoID دقت کنید، چون کار حذف رکوردهای تکراری بر اساس این ستون انجام خواهد شد. در واقعا دستور بالا کوچکترین Autoid را برای رکوردهای موجود در ستون EMPLOYEE را انتخاب می کند و مابقی رکوردها را حذف می کند. مثلا شما به جای MIN می توانید از MAX استفاده کنید تا بزرگترین AUTOID را برای اساس EMPLOYEE_ID نگه دارد و مابقی را حذف کند.
شما چند بار که دستور فوق را اجرا کنید، کاملا قضیه برای شما ملموس خواهد شد که بر چه اساسی رکوردها حذف می شوند. با استفاده از همان دو خط دستور به راحتی می توانید Duplicate Record های موجود در جدول SQL را Delete کنید.
آموزش پایگاه داده اس کیو ال سرور به زبان ساده از مبتدی تا پیشرفته بصورت کاملا کاربردی
دوره آموزش برنامه نویسی بانکهای اطلاعاتی VB.NET + SQL Server
نمایش دیدگاه ها (0 دیدگاه)
دیدگاه خود را ثبت کنید: