您的位置:首页 > 其它

各种连接的使用示例

2008-03-20 15:55 176 查看
--测试数据

DECLARE @a TABLE(id int)

INSERT @a SELECT 1

UNION ALL SELECT 2

DECLARE @b TABLE(id int)

INSERT @b SELECT 2

UNION ALL SELECT 3

--内联接

SELECT * FROM @a a JOIN @b b ON a.id=b.id

SELECT * FROM @a a,@b b WHERE a.id=b.id

/*--结果(只返回两个表中id相同的记录)

id id

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

2 2

--*/

--左向外联接

SELECT * FROM @a a LEFT JOIN @b b ON a.id=b.id

SELECT * FROM @a a,@b b WHERE a.id*=b.id --会产生不明确查询,不建议再使用这种方式

/*--结果(返回@a(左边表)所有的记录,及@b(右边表)的id与@a表id匹配的记录),不匹配的用NULL表示

id id

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

1 NULL

2 2

--*/

--右向外联接

SELECT * FROM @a a RIGHT JOIN @b b ON a.id=b.id

SELECT * FROM @a a,@b b WHERE a.id=*b.id –会产生不明确查询,不建议再使用这种方式

/*--结果(返回@b(右边表)所有的记录,及@a(左边表)的id与@b表id匹配的记录),不匹配的用NULL表示

id id

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

2 2

NULL 3

--*/

--完整外部联接

SELECT * FROM @a a FULL JOIN @b b ON a.id=b.id

/*--结果(返回@a与@b表所有的记录,id不匹配的用NULL表示

id id

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

2 2

NULL 3

1 NULL

--*/

--交叉联接

SELECT * FROM @a a CROSS JOIN @b b

SELECT * FROM @a a,@b b

/*--结果:

id id

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

1 2

2 2

1 3

2 3

--*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: