Instruction SQLGE MERGE et clause ORDER BY

Je voudrais écrire une instruction MERGE pour choisir les 10 premières lignes d'une grande table en utilisant la clause ORDER BY et mettre à jour c'est l'une des valeurs de la colonne. L'instruction MERGE me permet de sélectionner les 10 premières lignes, mais je ne pouvais pas mettre la clause ORDER BY n'importe où.

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); 

Vous pouvez utiliser une expression de table à la fois comme source et cible pour le 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; 

bien qu'il puisse être plus simple à utiliser

 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;