我已閱讀了一些關於ROWCOUNT的文章,但它並不完全在尋找。從我的理解rowcount指出在您運行查詢後受影響的行數。在你運行查詢之前,我正在尋找什麼。這可能嗎?如何知道有多少行會在運行Microsoft SQL Server 2008中的查詢之前受到影響
回答
簡短的答案是否定的。
在SQL服務器執行query..atleast之前,你不能得到的行數。
做到這一點的最好辦法是使用
Select count(*) from <table> where <condtion>
然後執行實際查詢
[delete]or [update] [set col='val']
from <table> where <condtion>
儘管可以使用SQL Server分析函數來獲取正在生效的總行數。但這只是在運行時。 – rvphx
將不會總是正確的,因爲更新將跳過無需更改的行。例如:新值和舊值已經相同。 –
@HimanshuSaini:據我所知,在更新之前,SQL服務器不會檢查舊值和新值是否相同。它只是用匹配條件更新所有記錄。如果您有任何相關文件,請分享。這對我來說是新的學習 –
最簡單的解決方案是在運行SELECT * FROM...
時用SELECT Count(*) FROM ...
替換其餘的查詢(WHERE
子句必須相同)。這會告訴你多少行將會受到影響
估計執行計劃將會給你行受到影響,統計數據,因此它贏得了」在這種情況下,你真的會幫助你。
我推薦的是複製你的UPDATE statement
或DELETE statement
並將它變成SELECT
。運行該程序以查看有多少行可以返回,並且您有多少行將被更新或刪除的答案。
如:
UPDATE t
SET t.Value = 'Something'
FROM MyTable t
WHERE t.OtherValue = 'Something Else'
變爲:
SELECT COUNT(*)
FROM MyTable t
WHERE t.OtherValue = 'Something Else'
執行操作之前,您還可以使用BEGIN TRANSACTION。您可以看到受影響的行數。從那裏,提交結果或使用ROLLBACK將數據恢復到原始狀態。
BEGIN TRANSACTION
更新表 組山坳= '東西' 其中COL2 = '別的東西';
提交/回滾
- 1. 如何知道在更新查詢後有多少行受到影響
- 2. 如何在運行sql查詢之前檢查受影響的行?
- 3. mySQL:性能受影響之前表中有多少行?
- 4. SQL Server:選擇1行會導致1 + 3行受到影響?
- 5. 如何傳遞值('運行時已知'多少')到SQL查詢
- 6. 受「外部」進程影響的SQL Server查詢響應時間?
- 7. 目前在SQL Server中運行查詢
- 8. MySQL查詢0行受到影響
- 9. 如何在sql server 2008上運行並行查詢?
- 10. Java Spring:如何查看有多少實體/行受到repository.delete方法的影響?
- 11. 如何執行受影響的行的SQL Server或ASP.NET C#
- 12. 「n行受影響」如何在SQL Server中工作?
- 13. VBA ADODB - 獲取受單個查詢影響的多行
- 14. 如何在sql server 2008中寫入行到列的查詢?
- 15. SQL Server在簡單查詢中返回奇怪的受影響行數
- 16. SQL Server在執行實際更新之前受更新影響的記錄數
- 17. MS Access 2007查詢不會在SQL Server 2008上運行
- 18. sql查詢動態地影響多行
- 19. Excel宏運行Access查詢;顯示受影響的行
- 20. 受影響的行數FTS查詢
- 21. 如何查找有多少行受到來自c#的選擇查詢的影響
- 22. 返回受多個查詢影響的行數
- 23. SQL Server 2008 - 查詢永遠在多個表上運行
- 24. SQL Server 2008查找缺少的行
- 25. 如何知道行值sql server asp.net?
- 26. 如何獲得受SQL Server上的BULK INSERT影響的行數?
- 27. 上次查詢中受影響行的SQL返回值?
- 28. 查找受影響的行
- 29. SQL Server - 刪除重複行 - Partition By如何影響此查詢?
- 30. 查詢優化SQL Server 2008
不,它是不可能沒有做兩個查詢。爲什麼你需要這樣做呢?根據請求的原因,如果查詢符合預期,則可以執行查詢檢查「@@ ROWCOUNT」,然後進行提交。或者使用'COUNT(*)OVER()'返回查詢的行數。 –