На своем пути учусь делать разные вещи с t sql. Я хочу улучшить свой код и хотел бы получить совет.
Допустим, у меня есть этот выбор:
SELECT [Id], [Type]
FROM
(
SELECT
ROW_NUMBER() OVER(PARTITION BY [Id] ORDER BY CurrentDate DESC) AS RowN,
CS.*
FROM [CookieStore] CS
)RN
WHERE RN.RowN = 1
, который возвращает мне таблицу результатов с несколькими строками:
1) id=5 Type='chocolate'
2) id=6 Type='oatmeal'
3) id=7 Type='gingerbread'
Чтобы достичь своей цели, я делаю курсор над результатом выбора, чтобы выполнить обновление:
/* some cursor logic */
UPDATE [SweetShop] SET [Type] = @CookieShopType WHERE [Id]=@CookieStoreId
/* some cursor logic */
Есть ли способ сделать обновление для каждой строки из выбора без курсора? Или в этом случае других вариантов нет?