有人可以告诉我如何编写查询以更新表中的前1条记录吗?
由于
答案 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';
但是,其他用户提到的警告仍然存在 - 使用TOP
表示有更多记录符合选择标准,并且有可能更新任意记录/记录。