SQL查询语句问题

pengwang911 2012-03-26 10:24:20
需要查询两张表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
...全文
62 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
gogodiy 2012-03-26
  • 打赏
  • 举报
回复
仅供参考:
有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扩展的每一个未匹配记录,通俗的说,它的查询结果等于全外连接减去内连接。(合并连接的两个表必须具有相同数量的字段,对应字段的数据类型也必须相同)行集合并
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 travylee 的回复:]

select t1.name,t2.name from t1 right join t2 on t1.rownum=t2.rownum
[/Quote]

楼主需要理清这几个连接查询的意思:
right join:返回右表的所有数据
left join:返回左表的所有数据
full join:返回连接查询的两表的所有数据
inner join:返回左右表的能对应的数据(楼主的语句就是相当于这个意思)
cross join:求笛卡尔积
  • 打赏
  • 举报
回复
select t1.name,t2.name from t1 right join t2 on t1.rownum=t2.rownum
99归一 2012-03-26
  • 打赏
  • 举报
回复

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

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧