SQL Server 在更新语句中排序

Posted

技术标签:

【中文标题】SQL Server 在更新语句中排序【英文标题】:SQL Server order by in an update statement 【发布时间】:2020-05-17 17:22:04 【问题描述】:

我有这个查询,但我似乎无法弄清楚如何将它与 order by 结合使用。这是查询:

UPDATE TOP 100 Kist SET Stapel ='" + Stapel + "' WHERE Row ='" + Row + "'"

“kist”中的每一行都有一个日期,我想使用这些日期来订购我的更新声明。像这样:

UPDATE TOP 100 Kist SET Stapel ='" + Stapel + "' WHERE Row ='" + Row + "'"
ORDER BY Date ASC

但这不起作用。

任何帮助将不胜感激。

【问题讨论】:

可能重复***.com/questions/2334712 这里似乎有些不对劲。 where 子句中有语法错误。这就是你所说的“不起作用”吗?这是某种动态 sql 吗? SQL Injection alert - 您应该将您的 SQL 语句连接在一起 - 使用 参数化查询 来避免 SQL 注入 - 查看Little Bobby Tables @Smor,这似乎可能是错误的,因为它是一个包含 C# 变量的查询.. 【参考方案1】:

您需要在派生表(子查询或通用表表达式)中选择要更新的行,然后更新:

with cte as (select top (100) stapel from kist where row = @row order by date)
update cte set stapel = @stapel

【讨论】:

CTE,或UPDATE FROM query,或UPDATE FROM SELECT***.com/questions/2334712

以上是关于SQL Server 在更新语句中排序的主要内容,如果未能解决你的问题,请参考以下文章

SQL server中如何更改排序规则

SQL Server中使用自定义指定顺序排序

SQL Server 排序规则的影响

SQL SERVER和ORACLE中SQL语句一样吗?

sql数据库查询出来的数据从大到小排序

数据库SQL语句学习笔记-排序检索数据