2010-10-04 42 views
2

任何人都可以告訴我如何編寫查詢來更新表中的前1條記錄嗎?SQL查詢更新表中的前1條記錄

謝謝

+1

您使用的是什麼版本的SQL? – 2010-10-04 13:13:30

+1

你能否留下一些細節?列信息?樣本數據? – Tim 2010-10-04 13:14:10

+1

根據您使用的DBMS,即使數據沒有更改,也不能保證從表中選擇top 1總是返回相同的記錄。您可能需要找到比「前1名」更好的標準。 – 2010-10-04 13:14:53

回答

2

關係表中沒有「前1條記錄」。除非您在查詢中指定一個記錄,否則記錄的順序不一樣。

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 
) 
0

在MS SQL中,除了現有的答案之外,還可以更新通過Common Table Expression (CTE)返回的TOP N行。如果需要,您也可以定義ORDER BY。這

一個優點是,如果你的表沒有主鍵,它仍然工作:

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

有一個

然而,其他用戶提到的告誡仍然 - 使用TOP意味着有更多的記錄符合選擇標準,並且有更新任意記錄/記錄的風險。