oracle表中的行数

时间:2019-06-05 22:52:57

标签: sql oracle

我删除了表中的行,如何查找3天前在oracle中的行数

3 个答案:

答案 0 :(得分:0)

3天前,运行:

    Select count(*) from table;

或者希望您正在运行12c,并且为此表启用了全部召回功能。

答案 1 :(得分:0)

现在获取表中的行数,添加已删除的行数,然后减去自删除以来添加的行数。

如果幸运的话,您可能会在ALL_TAB_MODIFICATIONS中找到这些数字。如果自那时以来收集了统计信息,那么您将不太幸运。

答案 2 :(得分:0)

如果启用了闪回,请尝试

SELECT COUNT (*)
  FROM your_table
  AS OF TIMESTAMP TO_TIMESTAMP ('03.06.2019 08:00:00', 'dd.mm.yyyy hh24:mi:ss');

(为什么03.06.2019?今天是06.06.2019:“ 3天前”)


例如:我有一个包含一些行的表:

SQL> select count(*) from test;

  COUNT(*)
----------
       873

SQL> alter session set nls_date_format = 'dd.mm.yyyy hh24:mi:ss';

Session altered.

现在几点了?

SQL> select sysdate from dual;

SYSDATE
-------------------
06.06.2019 08:43:56

现在,删除一些行:

SQL> delete from test where evbr > 9000;

84 rows deleted.

表中当前的行数:

SQL> select count(*) from test;

  COUNT(*)
----------
       789

在某个时间点有多少行(请注意,我在删除这些行之前已标出时间;那是06.06.2019 08:43:56):

SQL> select count(*) from test
  2  as of timestamp to_timestamp('06.06.2019 08:43:56', 'dd.mm.yyyy hh24:mi:ss');

  COUNT(*)
----------
       873

SQL>