Oracle中的两个相同表

Oracle中的两个相同表,oracle,toad,Oracle,Toad,我创建了两个相同的表,其中列出了数据库中与某些产品规则相关的所有例外情况。表1是第1周的表2是第2周的表。例外情况只是每周查看一次,数据库中没有进行任何更正。第二周的数据包括第一周的异常我想从第二周排除第一周的异常。仅为了查看新的异常我建议您向表中添加一个时间戳,并在此时间戳上选择/filter 这样,您还可以将所有异常放在一个表中,只定义两个视图 我不擅长PL/SQL,但也许您可以修改我的MySQL示例: CREATE DATABASE timetest; CONNECT timetest;

我创建了两个相同的表,其中列出了数据库中与某些产品规则相关的所有例外情况。表1是第1周的表2是第2周的表。例外情况只是每周查看一次,数据库中没有进行任何更正。第二周的数据包括第一周的异常我想从第二周排除第一周的异常。仅为了查看新的异常

我建议您向表中添加一个时间戳,并在此时间戳上选择/filter

这样,您还可以将所有异常放在一个表中,只定义两个视图

我不擅长PL/SQL,但也许您可以修改我的MySQL示例:

CREATE DATABASE timetest;
CONNECT timetest;

CREATE TABLE errorlog (
  stamp TIMESTAMP NOT NULL ,
  error VARCHAR(255) NOT NULL
);

INSERT into errorlog (`stamp`, `error`)
  VALUES (DATE_SUB(CURDATE(),INTERVAL 8 DAY), 'old');
INSERT into errorlog (`stamp`, `error`)
  VALUES (NOW(), 'new');

SELECT * FROM errorlog WHERE stamp>DATE_SUB(CURDATE(),INTERVAL 7 DAY);
SELECT * FROM errorlog WHERE stamp<DATE_SUB(CURDATE(),INTERVAL 7 DAY);
DROP DATABASE timetest;
创建数据库timetest;
连接时间测试;
创建表错误日志(
戳时间戳不为空,
错误VARCHAR(255)不为空
);
插入错误日志(`stamp`、`error`)
值(DATE_SUB(CURDATE(),间隔8天),“old”);
插入错误日志(`stamp`、`error`)
值(现在为(),“新”);
从错误日志中选择*,其中stamp>DATE\u SUB(CURDATE(),间隔7天);
从错误日志中选择*,其中戳记从错误日志中选择*,其中戳记>日期(CURDATE(),间隔7天);
+---------------------+-------+
|戳记误差|
+---------------------+-------+
|2009-01-29 01:44:38 |新|
+---------------------+-------+

mysql>从errorlog中选择*,其中stampOracle有一个减号运算符,因此您可以

SELECT col_a, col_b... FROM table_new
MINUS
SELECT col_a, col_b... from table_old

只要列具有相应的数据类型(如果表具有相同的结构,则可以使用SELECT*。

按年/周数将表划分为分区也可能有一些好处。

为了真正帮助您,我们需要更多信息。你说的是表还是视图(“例外情况是每周查看一次…”部分让我感到困惑


如果你能提供一个简短完整的例子(是的,从Tom Kyte那里偷来的),我们可以提供一个完整的答案。如果上述内容对您没有帮助的话。

我在两个表中都有时间戳,数据库中的例外情况没有改变,仍然是将第一周的数据拉入第二周的数据。我想,如果我创建了两个表,一个是第一周的数据,一个是第二周的数据,那么我可以创建第三个表,以及如何从第二周的数据中删除第一周的数据?如果我将第一周的数据作为一个表来执行,我将如何删除第一周的数据我不太明白你的最后一个问题。通过“选择”仅标记最近7天(第一次查询)的时间戳数据,结果中没有第一周的数据(仅显示“新”值)。要删除旧条目,只需在“选择”中的“戳记>日期…”处进行“删除”。您好,上面还有什么建议吗?
SELECT col_a, col_b... FROM table_new
MINUS
SELECT col_a, col_b... from table_old