سؤال

ومن نسخة احتياطية قاعدة بيانات لدي السجلات دون فريدة معرفات.

وبعض السجلات لديهم معرفات فريدة من نوعها. بعض السجلات مع معرفات المكررة تحتوي على قيم DateCreated مختلفة. بعض السجلات مع معرفات المكررة يحتوي على نفس القيم DateCreated.

وأنا أحاول الحصول على الاستعلام MSSQL 2005 وترك القيم ID الفريدة فقط مع القيمة DateCreated الأخيرة.

من

ID|    DateCreated  
1 |    1/1/09
2 |    1/2/09
2 |    2/2/09
3 |    1/3/09
3 |    1/3/09

ل

ID|    DateCreated  
1 |    1/1/09
2 |    2/2/09
3 |    1/3/09

مساعدة

هل كانت مفيدة؟

المحلول

DELETE FROM myTable AS t1 
WHERE EXISTS (
    SELECT 1 FROM myTable AS t2 
    WHERE t1.ID=t2.ID AND t1.DateCreated<t2.DateCreated)

وأي حذف أي صف حيث يوجد صف آخر مع نفس الهوية وتاريخ الإنشاء لاحق.

نصائح أخرى

create table #t ( id int, date datetime )

insert #t 
values(1, getdate())

insert #t 
values(1, getdate()+1)

insert #t 
values(1, getdate()-1)

insert #t 
values(2, getdate())

insert #t 
values(2, getdate()+1)

delete t 
from #t t
left join (select id, min(date) as date from #t group by id) as t1 
    on t.id = t1.id and t1.date = t.date
where t1.date is null
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top