解决方案 »

  1.   

    这个是两个表的关联条件,去掉的话查询出的结果集就是两个表直接相乘,记录会多很多
    最好理解的方式就是把下面两个语句分别执行,看看差异,这个更直观
    select * from ze_student a,ze_score b where b.s# = a.s# and a.grade =2007
    select * from ze_student a,ze_score b where a.grade =2007
      

  2.   

    b.s# = a.s# 表示两个表之间的关联条件,如果不使用这种限定,就会出现笛卡尔积的效果。关于笛卡尔积,你可以网上查一下。简单一点就是A表有10条记录,B表有10条记录。A和B做笛卡尔积时的结果就是10*10,也就是100条
      

  3.   

    select count(*) from ze_student a,ze_score b where b.s# = a.s# and a.grade =2007
    select count(*) from ze_student a,ze_score b where a.grade =2007 
      

  4.   

    b.s# = a.s#是关联两表的条件,这是内连接,去掉就会出现表的笛卡儿积,数据会多出很多,建议楼主去看看表连接,就是内连接、外连接和笛卡儿积,区分它们的区别。
      

  5.   

    这是数据库中表的内连接,连接时会按照两个表的关联字段一一对应。去掉这个条件,第一张表的每一行都会和第二张表的每一行关联一次,出现的结果集的行数,就是第一张表的行数和第二张表的乘积。就是所说的笛卡尔积。
    select t.id, t1.name ,t1.id,t1.name from test t,test1 t1 where t.id=t1.id order by t.id;select t.id, t.name ,t1.id,t1.name from test t,test1 t1 order by t.id可以看出区别
      

  6.   


    b.s# = a.s#是使得两张有关联的表进行关联字段的连接。如果不加此条件,就会出现笛卡儿积的结果,即两张表不是通过关联在查询而是在进行互乘连接。