主我思考思考....懂了, 称法不同, 我叫它为关关系. 两个表的关系.孤陋寡闻啊。。
问题:什么叫左连接,右连接,子表?
RT
提问时间:2003-11-7 17:47:39 回答次数:(2) 提问人:软界网友
回答(1)
from a left join b on a.x=b.x
from a right join b on a.x=b.x
左连接显示左边表的所有行,
又连接显示右边表的所有行
外连接显示所有表的所有行
内联界,显示能连接的所有行
内联接 (inner join)
通过比较源表间共享的列的值从多个源表检索行的操作。内联接排除来自不具有与其它源表中的行匹配的行的源表的行
孤陋寡闻啊。。
例子:
--关于连接的简单示例
--测试数据
declare @a table(ida int)
insert @a select 1
union all select 2
declare @b table(idb int)
insert @b select 2
union all select 3
--内连接
select * from @a a join @b b on a.ida=b.idb
/*--测试结果
只返回两个表中ida与idb相同的记录
ida idb
----------- -----------
2 2
(所影响的行数为 1 行)
--*/
--左连接
select * from @a a left join @b b on a.ida=b.idb
/*--测试结果
返回@a(左边表)所有的记录,及@b的idb与@a的ida对应的记录
没有对应的就用null表示
ida idb
----------- -----------
1 NULL
2 2
(所影响的行数为 2 行)
--*/
--右连接
select * from @a a right join @b b on a.ida=b.idb
/*--测试结果
返回@b(右边表)所有的记录,及@b的idb与@a的ida对应的记录
没有对应的就用null表示
ida idb
----------- -----------
2 2
NULL 3
(所影响的行数为 2 行)
--*/
--全连接
select * from @a a full join @b b on a.ida=b.idb
/*--测试结果
返回@a与@b的所有记录,没有对应的用NULL表示
ida idb
----------- -----------
2 2
NULL 3
1 NULL
(所影响的行数为 3 行)
--*/
阅读(8924) | 评论(0) | 转发(1) |