在DELETE之后计算已删除的记录

时间:2016-03-21 09:10:36

标签: sqlite sql-delete

我尝试计算在DELETE命令后删除的记录数:

SELECT COUNT(*) FROM BOXES
WHERE EXISTS  ( 
    DELETE FROM BOXES WHERE product='25043620' AND Order='0846'
)

我在删除附近遇到语法错误,但我无法弄清楚它是什么。

4 个答案:

答案 0 :(得分:6)

经过一番挖掘,我发现......在

之后
DELETE FROM BOXES WHERE product='25043620' AND Order='0846'

我要求数据库进行更改:

SELECT changes()

我知道删除了多少行。

答案 1 :(得分:1)

我认为你不能把计数和删除结合起来。单独做。

以下是示例: -

  

示例 - 使用SQL EXISTS子句

     

您还可以执行更复杂的删除。

     

您可能希望根据另一个表中的值删除一个表中的记录   表。由于您无法在SQL FROM子句中列出多个表   执行删除时,可以使用SQL EXISTS子句。

     

例如:

DELETE FROM suppliers
WHERE EXISTS
  ( SELECT customers.customer_name
    FROM customers
    WHERE customers.customer_id = suppliers.supplier_id
    AND customers.customer_name = 'IBM' );
     

此SQL DELETE示例将删除供应商中的所有记录   table表中名称为customers表的记录   IBM,customer_id与supplier_id相同。

     

如果您想确定要删除的行数,可以   可以在执行之前运行以下SQL SELECT语句   删除。

SELECT COUNT(*) FROM suppliers
WHERE EXISTS
  ( SELECT customers.customer_name
    FROM customers
    WHERE customers.customer_id = suppliers.supplier_id
    AND customers.customer_name = 'IBM' );

来自SQL: DELETE Statement

答案 2 :(得分:0)

您可以尝试将语句放入循环中,并将参数作为循环条件,然后让循环计数为您递增。

答案 3 :(得分:0)

对于那些来这里使用SQLServer的人-您将使用:

SET NOCOUNT OFF
DELETE FROM BOXES WHERE product='25043620' AND Order='0846'
SELECT @@ROWCOUNT

我不确定这是否可以在SqlLite中工作,如果有人可以确认:)