5

ORDER BY句を使用して、大きなテーブルから上位10行を選択し、それが列値の1つである更新するMERGEステートメントを記述したいと思います。MERGEステートメントを使用するとTOP10行を選択できますが、ORDERBY句をどこにも配置できませんでした。

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

1 に答える 1

8

のソースとターゲットの両方としてテーブル式を使用できます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;
于 2012-03-05T12:43:33.520 に答える