SQL> select * from dept ,dept e;
 
DEPTNO DNAME          LOC           DEPTNO DNAME          LOC
------ -------------- ------------- ------ -------------- -------------
    10 ACCOUNTING     NEW YORK          10 ACCOUNTING     NEW YORK
    10 ACCOUNTING     NEW YORK          20 RESEARCH       DALLAS
    10 ACCOUNTING     NEW YORK          30 SALES          CHICAGO
    10 ACCOUNTING     NEW YORK          40 OPERATIONS     BOSTON
    20 RESEARCH       DALLAS            10 ACCOUNTING     NEW YORK
    20 RESEARCH       DALLAS            20 RESEARCH       DALLAS
    20 RESEARCH       DALLAS            30 SALES          CHICAGO
    20 RESEARCH       DALLAS            40 OPERATIONS     BOSTON
    30 SALES          CHICAGO           10 ACCOUNTING     NEW YORK
    30 SALES          CHICAGO           20 RESEARCH       DALLAS
    30 SALES          CHICAGO           30 SALES          CHICAGO
    30 SALES          CHICAGO           40 OPERATIONS     BOSTON
    40 OPERATIONS     BOSTON            10 ACCOUNTING     NEW YORK
    40 OPERATIONS     BOSTON            20 RESEARCH       DALLAS
    40 OPERATIONS     BOSTON            30 SALES          CHICAGO
    40 OPERATIONS     BOSTON            40 OPERATIONS     BOSTON
 
16 rows selected
为什么表连接后,左右会显示4个ACCOUNTING,RESEARCH,SALES , OPERATIONS而右面则不一样

解决方案 »

  1.   

    两表相连接,如果没有条件,将是笛卡尔积。
    select * from a,b;
    如果a表记录数是m,b表记录数是n,则select查询的记录数是:m*n
    dept有4条记录,两个dept笛卡尔连接,则4*4=16条记录右边一样,只是自然顺序按第一个表作为驱动表,按其它字段排序看看
    select * from dept ,dept e order by e.DEPTNO;
      

  2.   

    老大你太牛了!!!才学oracle,不懂这些,谢谢