ورود

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



Iran58
پنج شنبه 09 شهریور 1396, 15:07 عصر
سلام
فرض کنید
جدول زیر را داریم

CREATE TABLE [dbo].[test](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Date] [date] NULL,
[Age] [int] NULL,
[Name] [nvarchar](50) NULL,
[Type] [nvarchar](50) NULL,
CONSTRAINT [PK_test] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]


GO


INSERT INTO [dbo].[test] VALUES ('2017-07-23', 1,'ali','a')
INSERT INTO [dbo].[test] VALUES ('2017-07-23', 1,'ali','b')
INSERT INTO [dbo].[test] VALUES ('2017-07-23', 2,'ali','c')
INSERT INTO [dbo].[test] VALUES ('2017-07-23', 3,'hasan','a')
INSERT INTO [dbo].[test] VALUES ('2017-07-24', 4,'hasan','b')
INSERT INTO [dbo].[test] VALUES ('2017-07-24', 4,'ali','a')
INSERT INTO [dbo].[test] VALUES ('2017-07-24', 5,'ali','c')
INSERT INTO [dbo].[test] VALUES ('2017-07-24', 6,'hasan','c')
INSERT INTO [dbo].[test] VALUES ('2017-07-23', 7,'reza','a')
INSERT INTO [dbo].[test] VALUES ('2017-07-24', 8,'reza','b')
INSERT INTO [dbo].[test] VALUES ('2017-07-25', 9,'reza','c')
INSERT INTO [dbo].[test] VALUES ('2017-07-24', 8,'reza','g')
INSERT INTO [dbo].[test] VALUES ('2017-07-25', 9,'reza','f')
INSERT INTO [dbo].[test] VALUES ('2017-07-24', 12,'hadi','g')
INSERT INTO [dbo].[test] VALUES ('2017-07-25', 12,'hadi','g')

حال می خواهم داده های تکراری ان (یک از داده های باقی بماند و مابقی تکراریهای)براساس سه حالت زیر حذف شوند از جدول مورد نظر
الف)کل ردیفها برابر باشند
ب)فقط تاریخ و نام برابر باشندو نوع برابر نباشند
ج)فقط تاریخ و نام و نوع برابر باشند
باتشکر

ASKaffash
سه شنبه 14 شهریور 1396, 07:48 صبح
سلام
Group By را استفاده کنید هر چه ستونهای گروه بندی به کل ستونها تعمیم داده شود کل رکوردهای کاملا" مساوی را استخراج می کنید

Iran58
سه شنبه 16 مرداد 1397, 09:49 صبح
سلام
روش سریعتر وبهینه تر ی وجود نداره

karim.mashayekhi
شنبه 03 شهریور 1397, 16:34 عصر
میتونید از روش پارتیشن بندی استفاده کنید