Оператор SQL Server MERGE и предложение ORDER BY
Я хотел бы написать оператор MERGE, чтобы выбрать ТОП 10 строк из большой таблицы с помощью предложения ORDER BY и обновить его одно из значений столбца. Оператор MERGE позволяет мне выбрать ТОП-10 строк, но я нигде не смог поместить предложение ORDER BY.
MERGE TOP(10) StudentAllocation AS SA
USING (SELECT @sub_id AS subId) AS TSA ON SA.sub_id = TSA.subId
WHEN MATCHED THEN
UPDATE SET SA.exam_batch = 1);
1 ответ
Решение
Вы можете использовать табличное выражение как источник и цель для MERGE
,
WITH SA AS
(
SELECT TOP(10) sub_id,
exam_batch
FROM StudentAllocation
ORDER BY sub_id
)
MERGE SA
USING (SELECT @sub_id AS subId) AS TSA ON SA.sub_id = TSA.subId
WHEN MATCHED THEN
UPDATE SET SA.exam_batch = 1;
хотя это может быть проще в использовании
WITH SA AS
(
SELECT TOP(10) sub_id,
exam_batch
FROM StudentAllocation
ORDER BY sub_id
)
UPDATE SA
SET exam_batch = 1
WHERE sub_id = @sub_id;