PDA

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



sg.programmer
یک شنبه 09 خرداد 1395, 18:23 عصر
سلام چطور میشه تمامی رکوردهای تکراری (بجز یکی از رکورد موجود ) را از دیتابیس حذف کرد؟

با T-SQL -

Mahmood_M
یک شنبه 09 خرداد 1395, 21:03 عصر
برای حذف رکوردهای تکراری با توجه به جدول چندین راه وجود داره
حالت اول اینه که شما یک فیلد ID داشته باشید که مقادیرش تکراری نباشه، اگر کل فیلدها تکراری هستند، می تونید یک فیلد ID جدید اضافه کنید و بعد به صورت زیر مقادیر تکراری رو حذف کنید :

DELETE FROM MyTable WHERE MyID NOT IN (SELECT MIN(MyID)
FROM MyTable GROUP BY Field1, Field2)
Field1 و Field2 هم فیلدهایی هستن که مفادیرشون تکراری هستش ( به ترتیب اولویت )

اما اگر فیلد ID غیرتکراری ای ندارید و نمی خواید فیلد ID جدید هم اضافه کنید می تونید با استفاده از گروه بندی رکوردها و شماره سطر رکوردها اونها رو حذف کنید و یک رکورد از هر گروه رو نگه دارید، مثال :


WITH CTETable AS
(
SELECT ROW_NUMBER() OVER(PARTITION BY Field1, Field2 ORDER BY OrderField) AS RowNumber
FROM MyTable
)
DELETE FROM MYCTE WHERE RowNumber > 1

Field1 و Field2 فیلدهای تکراری، و OrderField هم فیلدی هستش که اطلاعات رو بر اساسش Sort کنید و اولین رکورد لیست Sort شده رو نگه دارید
راه های دیگه ای هم مثل استفاده از JOIN هست که با جستجو می تونید پیدا کنید

sg.programmer
شنبه 22 خرداد 1395, 19:31 عصر
تشکر
رکورد های جدولم (id - DateTime-filed1)
---------------------------------------------
من در جدولم یک فیلد بر اساس تاریخ و زمان و رکوردی دیگر دارم. که در هر لحظه یک مقداری را میخونه و بر این اساس جدولم دارن پر میشن.
اگر فیلدهام تا 2 دقیقه شبیه هم هستند به جز اولین مقدار بقیه این مقادیر شبیه به هم را چطور باید حذف کنم؟ کوئری اینو چطور باید بنویسم مهندس