我想更新SQL Server中前100條記錄。我有一個表T1
與領域F1
和F2
。 T1
有200條記錄。我想更新前100條記錄中的F1
字段。我如何根據SQL Server中的TOP 100
進行更新?如何更新sql server中的前100條記錄
回答
注意,需要的括號UPDATE語句:
update top (100) table1 set field1 = 1
任何想法如何使用`訂單通過`以及? – 2013-02-27 18:30:47
@JoePhilllips使用Martin Smith的答案按 – jjxtra 2014-09-11 19:10:50
排序,但這些不是前100條記錄,而是100條任意選擇的記錄。前100名將包括一些排序記錄的命令。 – 2017-09-03 01:47:20
update tb set f1=1 where id in (select top 100 id from tb where f1=0)
如果沒有ORDER BY
的TOP
的整體思路並沒有太大的意義。你需要有一個一致的定義,哪個方向是「向上」,哪個方向是「向下」,頂層的概念是有意義的。
儘管如此SQL Server允許它,但是doesn't guarantee a deterministic result。
的UPDATE TOP
語法接受的答案不支持ORDER BY
條款,但它是可以通過使用CTE或派生表定義爲低於所需的排序順序在這裏得到確定性的語義。
;WITH CTE AS
(
SELECT TOP 100 *
FROM T1
ORDER BY F2
)
UPDATE CTE SET F1='foo'
對於那些喜歡我還是堅持了SQL Server 2000中,SET ROWCOUNT {number};
可以UPDATE
查詢
SET ROWCOUNT 100;
UPDATE Table SET ..;
SET ROWCOUNT 0;
之前使用將限制更新到100行
它至少已過時自SQL 2005以來,但從SQL 2012開始,它仍然有效。 編輯:它在SQL 2014中被殺害。使用SET ROWCOUNT不會影響SQL Server 2014及更高版本中的DELETE,INSERT和UPDATE語句。
更酷的是,您可以使用內聯表值函數來選擇要更新的行(以及有多少個通過TOP
)的行。那就是:
UPDATE MyTable
SET [email protected]
FROM tvfSelectLatestRowOfMyTableMatchingCriteria(@Param1,@Param2,@Param3)
對於表值函數你有一些有趣的選擇要更新的行狀:
CREATE FUNCTION tvfSelectLatestRowOfMyTableMatchingCriteria
(
@Param1 INT,
@Param2 INT,
@Param3 INT
)
RETURNS TABLE AS RETURN
(
SELECT TOP(1) MyTable.*
FROM MyTable
JOIN MyOtherTable
ON ...
JOIN WhoKnowsWhatElse
ON ...
WHERE [email protected] AND ...
ORDER BY MyTable.SomeDate DESC
)
...,有謊言(愚見)的真正力量只確定性地更新頂部選定的行,同時簡化語句的語法。
- 1. 表的SQL Server更新前1記錄
- 2. 如何通過LOOP更新SQL Server中的1000多條記錄?
- 3. 在cakephp中更新100+條記錄2x
- 4. SQL Server 2012基於下一條記錄的更新記錄
- 5. 只更新SQL Server中重複條目的第一條記錄
- 6. 更新記錄 - SQL SERVER
- 7. SQL Server中的自動更新記錄
- 8. SQL更新兩條記錄
- 9. SQL Server的SQL語句 - 更新記錄
- 10. 如何在SQL Server 2008 R2中更新記錄的最新條目
- 11. 使用Linq選擇前100條記錄
- 12. 更新SQL Server中每個唯一記錄的一個條目
- 13. 將數據集中的數千條記錄更新爲SQL Server
- 14. 更新只在SQL Server中的一個記錄有條件
- 15. 用以前的記錄中的數據更新SQL Server表記錄字段
- 16. SQL Server +選擇所有不同記錄的前1條記錄
- 17. SQL查詢更新表中的前1條記錄
- 18. 在SQL Server 2012中更新數百萬條記錄
- 19. 使用ASP.NET 3.5更新SQL Server 2005中的記錄 - 如何?
- 20. 如何通過asp.net更新SQL Server數據庫中的記錄?
- 21. 如何使用SQL Server中的Select語句更新記錄?
- 22. 如何追加/更新SQL Server虛擬表中的記錄?
- 23. SQL Server:更新表與以前的記錄值
- 24. Linq to sql更新記錄列表中的多條記錄
- 25. SQL Server 2005:從2個相同的記錄更新一條記錄
- 26. 如何更新MS SQL中的多條記錄?
- 27. SQL更新以前的記錄
- 28. 如何根據SQL中以前的記錄更新行?
- 29. 如何更新表中的記錄與當前記錄的ID
- 30. 更新記錄後SQL Server觸發
此鏈接可能會幫助你http://www.codefari.com/2015/10/how-can-i-update-top-10-records-in-sql.html – Singh 2016-02-16 04:59:52