暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 数以百万计的dup rec加入多个表

askTom 2017-02-24
244

问题描述

嗨,汤姆,

我有一个SELECT查询,它有大约10个表,在10个表中有2个是大表,其余是小表。这2个大表一起有90条laks记录。当我执行这个查询时,它会抛出我的错误,说表空间错误。所以我检查了计数,知道,这个查询返回3000万行,而不是90 laks行。我已经使用了所有可能的列来连接表格。

当我删除任何一个表 (从2个较大的表),它是给我正确的行。我尝试过删除表 'A' 并保留表 'B',反之亦然。如果我在脚本中有其中任何一个,那么一切都很好,问题是当两者都在脚本中时。我也尝试过不同的加入。是使用子查询或任何其他方式的任何方式,请详细说明。

注意: 我已要求管理员增加表空间,无法回答。

请帮帮我。

谢谢
帕布

专家解答

这听起来不像是一个调整问题-这是一个正确的问题。

如果我有一个查询,做:

SQL> select *
  2  from scott.dept, scott.emp
  3  where job = 'CLERK';

    DEPTNO DNAME          LOC                EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
---------- -------------- ------------- ---------- ---------- --------- ---------- --------- ---------- ---------- ----------
        10 ACCOUNTING     NEW YORK            7369 SMITH      CLERK           7902 17-DEC-80        800                    20
        10 ACCOUNTING     NEW YORK            7876 ADAMS      CLERK           7788 12-JAN-83       1100                    20
        10 ACCOUNTING     NEW YORK            7900 JAMES      CLERK           7698 03-DEC-81        950                    30
        10 ACCOUNTING     NEW YORK            7934 MILLER     CLERK           7782 23-JAN-82       1300                    10
        20 RESEARCH       DALLAS              7369 SMITH      CLERK           7902 17-DEC-80        800                    20
        20 RESEARCH       DALLAS              7876 ADAMS      CLERK           7788 12-JAN-83       1100                    20
        20 RESEARCH       DALLAS              7900 JAMES      CLERK           7698 03-DEC-81        950                    30
        20 RESEARCH       DALLAS              7934 MILLER     CLERK           7782 23-JAN-82       1300                    10
        30 SALES          CHICAGO             7369 SMITH      CLERK           7902 17-DEC-80        800                    20
        30 SALES          CHICAGO             7876 ADAMS      CLERK           7788 12-JAN-83       1100                    20
        30 SALES          CHICAGO             7900 JAMES      CLERK           7698 03-DEC-81        950                    30
        30 SALES          CHICAGO             7934 MILLER     CLERK           7782 23-JAN-82       1300                    10
        40 OPERATIONS     BOSTON              7369 SMITH      CLERK           7902 17-DEC-80        800                    20
        40 OPERATIONS     BOSTON              7876 ADAMS      CLERK           7788 12-JAN-83       1100                    20
        40 OPERATIONS     BOSTON              7900 JAMES      CLERK           7698 03-DEC-81        950                    30
        40 OPERATIONS     BOSTON              7934 MILLER     CLERK           7782 23-JAN-82       1300                    10


那么要么

1) 我的结果是正确的,或者
2) 我的结果不正确,因为我的SQL错误,或者
3) 我的结果不正确,因为这些表不应该被连接

在这种情况下,它是 “2” (我缺少一个连接),但是如果你正在连接2个表,并且 * 仍然 * 得到很多重复,那么在我看来,这是两个表,不打算被连接。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论