首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Sybase >

新手,问个简单的有关问题

2012-02-17 
新手,问个简单的问题,在线等Sybase 如何实现全连接呢?怎么没找到类似T-Sql的Full Join 用法呢[解决办法]大

新手,问个简单的问题,在线等

Sybase 如何实现全连接呢?
怎么没找到类似T-Sql的Full Join 用法呢

[解决办法]
大部分数据库中都没有 full join ,
一般都是通过 left join ... union .... right join 来实现
[解决办法]
在ASA11中有FULL JOIN,如果没有,用LEF TJOIN+RIGHT JOIN
[解决办法]
以下sql语句在sybase中已测试过...

SQL code
If not object_id('ta') is null    Drop table taGoIf not object_id('tb') is null    Drop table tbGoCreate table ta(id int,va varchar(10))Create table tb(id int,vb varchar(10))insert into ta select 1,'aa' insert into ta select 2,'bc' insert into ta select 3,'ccc'insert into tb select 1,'2'insert into tb select 3,'58' insert into tb select 4,'67'--内连接简单写法select a.id,a.va,b.id,b.vb from ta a,tb bwhere a.id=b.id--内连接select a.id,a.va,b.id,b.vb from ta a inner join tb bon a.id=b.idselect a.id,a.va,b.id,b.vb from ta a join tb bon a.id=b.id--左连接(左外连接)--返回left join 子句中指定的左表的所有行,以及右表所匹配的行。select a.id,a.va,b.id,b.vb from ta a left join tb bon a.id=b.idselect a.id,a.va,b.id,b.vb from ta a left outer join tb bon a.id=b.id--右连接(右外连接)--返回right join 子句中指定的右表的所有行,以及左表所匹配的行。select a.id,a.va,b.id,b.vb from ta a right join tb bon a.id=b.idselect a.id,a.va,b.id,b.vb from ta a right outer join tb bon a.id=b.id--完整外连接  [color=#FF0000](sybase 不支持full join) [/color]--等同左连接+右连接select a.id,a.va,b.id,b.vb from ta a full join tb bon a.id=b.idselect a.id,a.va,b.id,b.vb from ta a full outer join tb bon a.id=b.id--交叉连接  [color=#FF0000](sybase不支持 cross关键字)[/color]--没有两个表之间关系的交叉连接,将产生连接所涉及的表的笛卡尔积。select a.id,a.va,b.id,b.vb from ta a cross join tb bselect a.id,a.va,b.id,b.vb from ta a,tb b--自连接--一个表和其本身连接。select a.id,a.va,b.id,b.va from ta a,ta b where a.id=b.id+1
[解决办法]
--完整外连接 (sybase 不支持full join)
--等同左连接+右连接

SQL code
select a.*,b.* from a left join b on a.id=b.idunion allselect a.*,b.* from a right join b on a.id=b.id where a.id is null
[解决办法]
sybase 不支持full join、cross

热点排行