这个UPDATE语句有效吗?它在SQL中给我错误

时间:2016-12-05 10:42:42

标签: sql sql-server-2008

我在以下查询中收到错误。有人可以帮助识别错误吗?

UPDATE TOP(1) Customers SET FirstName = 'ted' where LastName = 'Miller'

1 个答案:

答案 0 :(得分:0)

您无法在更新声明中说UPDATE TOP(1)

如果您有多行LastName = 'Miller',但只想更新前一行,则需要在where子句中指定其他条件,直到只返回一行为止。

话虽如此,这可能是您正在寻找的:

UPDATE Customers
   SET FirstName = 'ted'
WHERE Id IN (
   SELECT  TOP 1 Id
   FROM    Customers
   WHERE   LastName = 'Miller'
)

我推断您的行有一个Id字段或其他字段来唯一标识Customer行。如果它没有,那么你遇到的问题不仅仅是这一个UPDATE语句。

另外,因为我没有在子查询中指定ORDER BY(在您尝试的UPDATE语句中也没有指定),那么最后一行是" top一个"是完全随意的。如果您将ORDER BY添加到告诉它如何确定哪一行是" top"那么您将获得更可靠的结果