Недавно у нас были некоторые проблемы, когда SQL-скрипт, который удалял бы повторяющиеся записи из таблицы, не использовал бы самую последнюю запись в качестве сохраняемой.Я думаю, что эта строка является проблемой
delete from vaccine_patient_details
where vacc_pat_guid <>
(Select top 1 vacc_pat_guid
from vaccine_patient_details as v
where v.patient_guid = patient_guid and
v.vaccine_guid = vaccine_guid
order by date_given desc)
Это правильный синтаксис?Я нашел другую версию скрипта, работающую на другом столе.(имена изменены, чтобы соответствовать первому примеру)
delete from vaccine_patient_details
where vacc_pat_guid <>
(Select top 1 vacc_pat_guid
from vaccine_patient_details as v
where v.patient_guid = vaccine_patient_details.patient_guid and
v.vaccine_guid = vaccine_patient_details.vaccine_guid
order by date_given desc)
Этот использует имя таблицы удаленной таблицы во внутреннем предложении where, может ли это быть причиной проблемы в моей первой версии?
Подробная информация о таблице:
- Любые столбцы, заканчивающиеся на guid, представляют собой тип данных uniqueidentifier
- resp_pat_guid - это первичный ключ и является уникальным.дата и время, которые могут быть нулевыми.Если есть дубликат, в котором один равен нулю, а другой не равен нулю, он должен предпочесть ненулевой.