2016-03-21 51 views
0

我尝试计算有多少条记录将DELETE命令之后被删除:计数删除的记录后,DELETE

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

我得到一个语法错误附近删除,但我想不通这是它。

+0

https://www.sqlite.org/c3ref/changes.html:*该函数返回最近完成的INSERT,UPDATE或DELETE语句修改,插入或删除的行数* –

回答

1

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

问你的数据库变化在于:

SELECT changes() 

,你会得到了多少行删除。

0

我不认为你可以结合计数和删除。单独做他们。

这里的和例如: -

示例 - 使用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'); 

这DELETE语句例子删除供应商 表,其中有在客户表,它的名字是 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

0

你可以尝试把语句转换成一个循环的说法作为循环条件,然后才让循环计数为你为它增加。