需要查询两张表T1,T2。两张表的字段都是RowNum和Name。
T1有9条数据,T2有10条数据。
如果按这样查询:select t1.name,t2.name from t1,t2 where t1.rownum=t2.rownum
只能查出9条数据。现想查出10条数据,不够10条的列补空。格式如下
t1.name  t2.name
 xxx      yyy
 xxx      yyy
 xxx      yyy
 xxx      yyy
 xxx      yyy
 xxx      yyy
 xxx      yyy
 xxx      yyy
 xxx      yyy
          yyy

解决方案 »

  1.   

    select t1.name,t2.name from t1 right join t2 on t1.rownum=t2.rownum
      

  2.   


    楼主需要理清这几个连接查询的意思:
    right join:返回右表的所有数据
    left join:返回左表的所有数据
    full join:返回连接查询的两表的所有数据
    inner join:返回左右表的能对应的数据(楼主的语句就是相当于这个意思)
    cross join:求笛卡尔积
      

  3.   

    仅供参考:
    有m条记录的table1表,有n条记录的table2表。外联接中,保留表的记录全部显示,非保留表以NULL扩展。
    1. 交叉连接table1 cross join table2将包含m*n条记录,由两个表中所有可能的记录对组成,因为没有匹配字段或选择条件,所以不能使用on子句和using子句;
    2. 内连接table1 inner join table2将包含r条记录(r<m*n),严格来说,内连接是交叉连接的一个子集,它是通过消除交叉连接中不满足内连接匹配条件的记录而生成的,必须使用on子句。
    3. 左外连接left outer join包含内连接所有记录,以及保留表table1中NULL扩展的每一个未匹配记录;
    4. 右外连接right outer join包含内连接所有记录,以及保留表table2中NULL扩展的每一个未匹配记录;
    5. 全外连接full outer join包含内连接所有记录,以及保留表table1中NULL扩展的每一个未匹配记录,保留表table2中NULL扩展的每一个未匹配记录,通俗的说,它的查询结果等于左外连接加上右外连接;列合并,两张表的数据会全部出来
    6. 合并连接union join包含table1中NULL扩展的每一个未匹配记录,加上table2中NULL扩展的每一个未匹配记录,通俗的说,它的查询结果等于全外连接减去内连接。(合并连接的两个表必须具有相同数量的字段,对应字段的数据类型也必须相同)行集合并
      

  4.   


    select 
    t1.name
    , t2.name
    from t2
    left join t1.rownum=t2.rownum