Я возьму удар по вашей проблеме. Это только предположение, основанное на запросе, который вы указали. Полный вопрос мог бы описать, что именно вы подразумеваете под повторяющейся строкой.
delete from Registrations
where exists (
select 1
from Registrations r2
where r2.UserItemId = Registrations.UserItemId
and r2.CourseOfferingId = Registrations.CourseOfferingId
and r2.Id < Registrations.Id
);
Видимо у вас есть несколько строк, которые имеют одни и те же UserItemId
и CourseOffereningId
но разные Id
значения. Я предполагаю, что вы хотите сохранить один с самым низким Id
и отказаться от остальных.
Подзапрос в запросе принимает каждую строку в таблице и проверяет, есть ли другая строка, подобная ей, но с более низким идентификатором. Если ответ, если да, то строка удаляется.
Этот вопрос является неполным, но я предлагаю вам следующее: 'удалить из регистраций, где существует (выберите 1 из регистраций r2, где r2.UserItemId = Регистрации.UserItemId и r2.CourseOfferingId = Регистрации. CourseOfferingId и r2.Id <Регистрации. UserItemId' – shawnt00
, что здесь делает выбор 1 – user18160
Вы можете использовать 'select *' или любое другое выражение. Точка заключается в том, возвращает ли подзапрос результат - результат на самом деле не имеет значения. Если вы просто запустите 'select 1 'вы получаете одну строку и столбец со значением' 1'. – shawnt00