导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

在于关系运算中的自然连接

nofarewell 2008-01-05 09:37:23
书里是这样的定义的:
自然连接是一种特殊的等值连接,它要求关系中进行比较的两个分量必须是相同的属性组,并且在结果中将重复属性列去掉。
有两点不明白:
1,既然是等值连接,以两个关系连接为例,每个关第中取哪个属性与另一个关系中的哪个属性进行等值比较?
2,连接后要去掉重复的属性列,去掉的是原来哪个关系的属性列?
也许是一时脑子糊了,在这里卡住,请高手解救,有个具普遍性的自然连接例子就列好了 谢谢
...全文
1736 点赞 收藏 7
写回复
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qizhengsheng 2008-12-17
dawugui就是好
回复
Jeff Xiong 2008-12-17
自然连接是在等值连接的基础上实现的.可以看下面的帖子.
http://topic.csdn.net/u/20070905/22/208d3ca9-8ca4-41d3-8430-2512f02a3918.html
回复
timbear 2008-12-17
学习一下~
回复
dawugui 2008-01-06
如何从表A(总表)中找出表B(分表)中不存在的记录组合

假设表A和表B都只有两个字段id,name
如何用一句SQL返回表A中存在的id,name结果集而在表B中不存在的id,name结果集

select A.* from A left join B on A.id=B.id and A.name=B.name where B.id is null

select * from A where not exists(select top 1 * from B where A.ID=B.ID)

这两个都可以.


--前提:表中不能有text、ntext、image、cursor 数据类型的字段。

用CheckSum()最简单:

select * from A where checksum(*) not in (select checksum(*) from B)

----------------------------------------------------------------------


查询表A,表B中重复的记录

select * from A where checksum(*) in (select checksum(*) from B)

查询表A,表B中重复的记录,并把结果输入到表C中。

select * into c from A where checksum(*) in (select checksum(*) from B)
回复
dawugui 2008-01-06
用checksum就行了.
回复
nofarewell 2008-01-06
SQL我还没研究呢 就从关系代数的角度来看 谁能帮我说说?
我是学C++的,为了应付软考学的这
回复
yuedeem 2008-01-05
可以去下面这个地址看看,有例子
http://topic.csdn.net/t/20030405/15/1622594.html
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告