gpt4 book ai didi

sql - 如何使用子选择更新前 5 个?

转载 作者:行者123 更新时间:2023-12-04 14:17:15 27 4
gpt4 key购买 nike

我很惊讶地看到以下更新了 34 行……而不是 5 行:

UPDATE 
Message
SET StatusRawCode = 25
WHERE StatusRawCode in
(
Select TOP 5
M2.StatusRawCode
From Message as M2
Where M2.StatusRawCode = 5
)

关于如何将其打造成正确形状的任何想法?

谢谢!

最佳答案

我的猜测是从您的子查询返回的 StatusRawCode 值是在已更新的 34 条记录中使用的值。而不是

WHERE StatusRawCode IN

使用这个:

UPDATE 
Message
SET StatusRawCode = 25
WHERE PrimaryKey in
(
Select TOP 5
PrimaryKey
From Message as M2
Where M2.StatusRawCode = 5
)

本质上,您将选择要在子查询中更新的 5 行的主键。请记住,这将仅根据表的聚簇索引顺序更新前 5 条记录。如果您需要为前 5 条记录指定特定条件,则需要添加 order by 子句。

例如,如果有一个名为 Rank 的列要用作条件,请按如下方式编写查询:

UPDATE 
Message
SET
StatusRawCode = 25
WHERE
PrimaryKey IN
(
SELECT TOP 5
PrimaryKey
FROM
Message as M2
WHERE
M2.StatusRawCode = 5
ORDER BY
Rank DESC
)

这将为您提供基于排名列值的前 5 条记录。您可以根据需要替换您的列。

关于sql - 如何使用子选择更新前 5 个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1220856/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com