【问题标题】:Two Identical tables in OracleOracle中的两个相同的表
【发布时间】:2009-01-29 00:32:11
【问题描述】:

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

【问题讨论】:

    标签: oracle toad


    【解决方案1】:

    我建议您在表格中添加一个时间戳,并在此时间戳上进行选择/过滤。

    这样你也可以把所有个异常放到一个表中,然后定义两个视图。

    我不擅长 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;
    

    给我:

    mysql> SELECT * FROM errorlog WHERE stamp>DATE_SUB(CURDATE(),INTERVAL 7 DAY);
    +---------------------+-------+
    | stamp               | error |
    +---------------------+-------+
    | 2009-01-29 01:44:38 | new   |
    +---------------------+-------+
    
    mysql> SELECT * FROM errorlog WHERE stamp<DATE_SUB(CURDATE(),INTERVAL 7 DAY);
    +---------------------+-------+
    | stamp               | error |
    +---------------------+-------+
    | 2009-01-21 00:00:00 | old   |
    +---------------------+-------+
    

    【讨论】:

    • 我在两个表中都有一个时间戳,数据库中的异常没有改变它仍然将第 1 周的数据拉入第 2 周的数据我认为如果我创建了 2 个表,其中第 1 周的数据和一个有第二周的数据,然后我可以创建第三个表,还有一些如何从第二周的数据中删除第一周?
    • 如果我将其作为一个表格执行,我将如何删除报告中已经出现的第一周的数据
    • 我不太明白你的最后一个问题。通过仅“选择”过去 7 天(第一次查询)中时间戳的数据,您在结果中没有第一周的数据(仅显示“新”值)。要删除旧条目,只需在“选择”中“删除”“stamp>DATE_....”即可。
    【解决方案2】:

    Oracle 有一个 MINUS 运算符,所以你可以这样做

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

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

    【讨论】:

    • 您好,以上内容您还有什么可以建议的吗?
    【解决方案3】:

    按年/周数将表分成分区也可能有一些优势。

    【讨论】:

      【解决方案4】:

      为了真正帮助您,我们需要更多信息。您是在谈论表格还是视图(“......例外情况只是每周查看......”部分让我感到困惑)?

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-13
        • 1970-01-01
        • 1970-01-01
        • 2023-02-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多