+ -
当前位置:首页 → 问答吧 → 表自身 自然连接 问题

表自身 自然连接 问题

时间:2011-09-23

来源:互联网

有一张表test,只有一个属性a,如下:
a
1
2
3
则:
select * from test natural join test 结果为:
a
1
1
1
2
2
2
3
3
3
select * from test t1 natural test test t2 结果为:
a
1
2
3
请问表加不加别名的区别是?
谢谢

作者: ebeyond   发布时间: 2011-09-23

自然连接(Natural join)

Natural join基于两个表中的全部同名列建立连接

从两个表中选出同名列的值均对应相等的所有行 
如果两个表中的同名列的所有数据类型不同,则出错 
不允许在参照列上使用表名或者别名作为前缀 

作者: rihyou   发布时间: 2011-09-23

你贴出来的语句是有问题的吧?
我自己用表试了一下:
select * from test_yixl1 natural join test_yixl
minus
select * from test_yixl1 t1 natural join test_yixl t2
--执行结果,没有记录

表加不加别名效果是一样的。

作者: yixilan   发布时间: 2011-09-23

引用 2 楼 yixilan 的回复:

你贴出来的语句是有问题的吧?
我自己用表试了一下:
select * from test_yixl1 natural join test_yixl
minus
select * from test_yixl1 t1 natural join test_yixl t2
--执行结果,没有记录

表加不加别名效果是一样的。


您好!那两条查询我运行了,确实没错。minus并不能确定两查询结果相同吧

作者: ebeyond   发布时间: 2011-09-23

第一种是自然连接,因为你连接的是自身,所有所有字段都是一样的,
你的每条数据都会和所有的行进行关联,也就是做了一个类笛卡尔积;

第二种起了别名就是两个表了,只会做一次关联,这个才是正确的阿

作者: lxyzxq2008   发布时间: 2011-09-23

热门下载

更多