Kri*_*aya 5 sql-server sql-order-by merge-statement
我想写一个MERGE语句,通过使用ORDER BY子句从一个大表中选择TOP 10行,并更新它的一个列值.MERGE语句允许我选择TOP 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);
Run Code Online (Sandbox Code Playgroud)
您可以使用表表达式作为源的表和目标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;
Run Code Online (Sandbox Code Playgroud)
虽然使用起来可能更简单
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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6967 次 |
| 最近记录: |