【问题标题】:SQL Server order by in an update statementSQL Server 在更新语句中排序
【发布时间】: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

但这不起作用。

任何帮助将不胜感激。

【问题讨论】:

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

标签: sql sql-server tsql sql-update sql-order-by


【解决方案1】:

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

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

【讨论】:

猜你喜欢
  • 2016-06-22
  • 2021-12-03
  • 1970-01-01
  • 2013-07-06
  • 2016-12-21
  • 1970-01-01
  • 2012-05-18
  • 1970-01-01
  • 2017-03-10
相关资源
最近更新 更多