用于更新表中前1个记录的SQL查询

时间:2010-10-04 13:11:27

标签: sql

有人可以告诉我如何编写查询以更新表中的前1条记录吗?

由于

4 个答案:

答案 0 :(得分:10)

您必须通过对您决定的列进行排序来决定表中的最高记录。

也就是说,你可以在SQL Server中执行此操作:

UPDATE [YourTable]
SET [YourColumn] = SomeValue
WHERE [PrimaryKey] IN 
(
   SELECT TOP 1 [PrimaryKey]
   FROM [YourTable]
   ORDER BY [PrimaryKey]  -- You need to decide what column you want to sort on
)

答案 1 :(得分:2)

关系表中没有“前1条记录”。除非您在查询中指定记录,否则记录不是任何顺序。

答案 2 :(得分:2)

在SQLServer中,您可以在更新表达式中使用TOP关键字:

http://msdn.microsoft.com/en-us/library/ms177523.aspx

当TOP(n)子句与UPDATE一起使用时,对随机选择的'n'行执行更新操作。

答案 3 :(得分:0)

在MS SQL中,除了现有答案之外,还可以更新通过Common Table Expression (CTE)返回的前N行。如果需要,您还可以定义ORDER BY

这样做的一个优点是,即使您的表没有主键,它也能正常工作:

WITH Top1Foo AS
(
    SELECT TOP 1 *
    FROM Foos
    ORDER BY Name DESC
)
UPDATE Top1Foo
  SET Name = 'zzz';

有一个Example SqlFiddle here

但是,其他用户提到的警告仍然存在 - 使用TOP表示有更多记录符合选择标准,并且有可能更新任意记录/记录。