sql - 获取删除的记录数sql

标签 sql oracle sql-delete rowcount

我想获取已删除记录的行数。下面的查询返回将受到影响的记录数,但

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

我需要这样的东西,行被删除后,我可以在前端显示已删除的记录数。
SELECT COUNT(*) FROM suppliers(
DELETE from supplier(
    WHERE EXISTS
      ( SELECT customers.customer_name
        FROM customers
        WHERE customers.customer_id = suppliers.supplier_id
        AND customer_id > 25 ));

我不想运行两次查询,一次是获取将被删除的记录数,如果它大于 0,那么我运行第二个查询来删除记录。

最佳答案

您可以使用 RETURNING INTO子句来获取所有被删除的行——然后计算这些行。

一个更简单的计数方法是 SQL%ROWCOUNT在 PL/SQL 代码中。像这样的东西:

BEGIN
    DELETE from supplier(
        WHERE EXISTS
          ( SELECT customers.customer_name
            FROM customers
            WHERE customers.customer_id = suppliers.supplier_id
            AND customer_id > 25 );
    dbms_output.put_line(SQL%ROWCOUNT);
END;

关于sql - 获取删除的记录数sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31507423/

相关文章:

mysql - 从表中删除数据,通过两个表连接

sql - Oracle Insert Select with order by

mysql - 在 where 子句中使用参数的 Superset sql 查询编辑器

MySQL 死锁 - 访问不同的主键值也会造成死锁

sql-server - 这些表对于 SQL Server 或 Oracle 来说太大了吗?

oracle - 如何将列数据迁移到新的数据类型

MySQL 试图删除所有不受外键约束的行

java - 为什么java看不到我的mysql驱动程序

mysql - 有没有可能加速MySQL的 "Updating Reference Tables"线程状态?

sql-server - Oracle 的 SQLServer 发布