簡體   English   中英

DELETE ... OUTPUT COUNT(DELETED。*)

[英]DELETE … OUTPUT COUNT(DELETED.*)

我想知道在某個DELETE操作中刪除了多少行。

我拿了微軟的例子B

DELETE Sales.ShoppingCartItem
OUTPUT DELETED.* 
WHERE ShoppingCartID = 20621;

並嘗試修改它以僅返回已刪除記錄的count

DELETE FROM datacache 
OUTPUT COUNT(DELETED.*)
WHERE userId=@id

但這引發了

ExceptionMessage: "Incorrect syntax near '*'."
ExceptionType: "System.Data.SqlClient.SqlException"
Message: "Error"

所以我試過了

DELETE FROM datacache 
OUTPUT COUNT(DELETED)
WHERE userId=@id

哪個扔了

ExceptionMessage: "Invalid column name 'DELETED'."
ExceptionType: "System.Data.SqlClient.SqlException"
Message: "Error"

我錯過了什么?

只需運行您的查詢並獲取修改后的行

DELETE 
FROM datacache 
WHERE userId=@id

SELECT @@ROWCOUNT

您不能在OUTPUT子句中使用聚合。 您可以將任何列輸出到表變量中,並從那里開始計數:

DECLARE @t TABLE(id int)

DELETE FROM Sales.ShoppingCartItem
OUTPUT Deleted.ShoppingCartID INTO @t
WHERE ShoppingCartID = 20621;

SELECT COUNT(*) FROM @t

之后如何計算記錄?

DELETE Sales.ShoppingCartItem
OUTPUT DELETED.ID INTO @DELETEDIDS
WHERE ShoppingCartID = 20621;

SELECT COUNT(*)
FROM @DELETEDIDS;

或者,只需運行查詢並使用@@ROWCOUNT

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM