我试着没有这种问题啊SQL> select * from tb1;NAME
----------
GN3
GN1
GN2
GN4
GN5实际:90
SQL> select * from tb1 where name=name;NAME
----------
GN3
GN1
GN2
GN4
GN5实际:70

解决方案 »

  1.   

    id=id条件恒为真,则这个语句与
    select * from info是一致的。
      

  2.   

    不好意思,我弄错了,是这样的:
    select * from info e1,info e2 where e1.name=e1.name;
    会出现3的二次方的记录数;
    如果是select * from info e1,info e2,info e3 where e1.name=e1.name;
    会出现3的三次方的记录数;然后以次类推。实在是非常的困惑也,请高人指点
      

  3.   

    where e1.name=e1.name条件是恒等式!
    这是笛卡儿乘积现象。
      

  4.   

    这么说就对了,实际上你的关联查询没有任何关联限制,where e1.name=e1.name语句根本不起作用,所以结果应该是你所关联的表的记录的乘积。
     比如:tab_1中5条记录,tab_2中3条记录,则
      select * from tab_1,tab_2;返回 5 * 3 = 15条记录
     因为你的from 后的两个表同名,即记录数相等,所以结果是记录的平方,三次方。
      

  5.   

    笛卡儿积的标准现象。
    笛卡儿积本身是当e1与e2没有关联时产生,现在e1.name=e1.name恒为真,也就一样了。
      

  6.   

    通过where语句相关联的表是多对多时就会出现笛卡尔积的现象。
      

  7.   

    YOu need to add the linkage between 2 tables .a.col1 = b.col1