三个表insert into aa1 values(1,'aa1','aa1');
insert into aa1 values(2,'aa1','aa1');
create table aa2(
 id int ,
 name varchar(20),
 sex varchar(20)
)
insert into aa2 values(1,'aa2','aa2');
insert into aa2 values(2,'aa2','aa2');create table aa3(
 id int ,
 name varchar(20),
 sex varchar(20)
)
//aa3是空表 create table aa4(
 id int ,
 name varchar(20),
 sex varchar(20)
)
//insert into aa4 values(1,'aa4','aa4');
//insert into aa4 values(2,'aa4','aa4');现在我用以下查询select * from aa1,aa2 where aa1.id=aa2.id;
//当然这个肯定是可以查出来的 select * from aa1,aa2,aa3 where aa1.id =aa2.id; 
//那为什么这个查不到数据 仅仅加了个空表aa3为什么就得不到值了。  问题1.select * from aa1,aa2,aa4 where aa1.id =aa2.id ;
//但我这样却可以得到值。。为什么? 问题2 
select * from aa1 inner join aa2 on aa1.id=aa2.id inner join aa3 on aa1.id=aa3.id;
//内连接依然查不到  问题3
select * from aa1 left join aa2 on aa1.id=aa2.id left join aa3 on aa1.id=aa3.id; 
//左连接为什么可以查到 问题4select * from aa1 right join aa2 on aa1.id=aa2.id right join aa3 on aa1.id=aa3.id;
//右连接依然查不到 问题5

解决方案 »

  1.   

      不要意思 写掉了一个 aa1表
    create table aa1(
     id int ,
     name varchar(20),
     sex varchar(20)
    )加到最上面··
      

  2.   

    简单做个测试
    a1无记录
    A有记录
    SELECT * FROM a,a1
    没有记录
      

  3.   


    //aa3是空表  与其它表做笛卡尔积的结果还是空表。aa4 有记录,这们与它表做笛卡尔积的结果自然会有N*M条记录。
      

  4.   

    先读N遍《数据库系统概论(第四版)》 王珊 萨师煊   高等教育出版社 (掌握基础知识和概念) 然后再粗略浏览一遍MYSQL的官方手册。(方便以后查找,避免类似于考试的时候,给你本政治书也不知道答案在第几章,第几页)MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
      

  5.   

    问题1:select * from aa1,aa2,aa3 where aa1.id =aa2.id; 
    aa3没有记录,记录数为0
    aa1记录数*aa2记录数*aa3记录数(0)=0
    问题2:A1、A2均有记录
    问题3:A3表没有满足条件的记录
    问题4:以A1为标准,有记录
    问题5:以aa3为标准,没有记录