当前位置:首页 > MSSQL

left join,inner join,right join,cross join,full join的区别

canca18年前 (2008-03-10)MSSQL744

 

1,总论:

LEFT JOIN返回”first_table”中所有的行尽管在” second_table”中没有相匹配的数据。

RIGHT JOIN返回”second_table”中所有的行尽管在”first_table”中没有相匹配的数据。

INNER JOIN返回的结果集是两个表中所有相匹配的数据。

2,分解:

还是用一个例子来的痛快些。。。

declare @a table(a int,b int)
declare @b table(a int,b int)

insert @a values(1,1)
insert @a values(2,2)
insert @b values(1,1)
insert @b values(3,3)

--
:
select * from @a Aa left join @b Bb on Aa.a=Bb.a
--
右:
select * from @a Aa right join @b Bb on Aa.a=Bb.a
--

select * from @a Aa join @b Bb on Aa.a=Bb.a
--
外:
select * from @a Aa full join @b Bb on Aa.a=Bb.a
--
完全
select * from @a,@b


cross join
是笛卡儿乘积 就是一张表的行数乘以另一张表的行数
left join
第一张表的连接列在第二张表中没有匹配是,第二张表中的值返回null
right join
第二张表的连接列在第一张表中没有匹配是,第一张表中的值返回null
full join
返回两张表中的行 left join+right join
inner join
只返回两张表连接列的匹配项

补充:在left join 中,如果表一中的某行在表二中有二行对应,则结果集中会有两行记录生成;同理right join。

扫描二维码推送至手机访问。

版权声明:本文由Ant.Master's Blog发布,如需转载请注明出处。

本文链接:https://iant.work/post/475.html

标签: MSSQL
分享给朋友:

“left join,inner join,right join,cross join,full join的区别” 的相关文章

EXISTS与IN的区别

网上查了很多关于这两个单词的用法,说法很多,但大同小异,现在归纳如下: 关于EXISTS与IN的区别:EXISTS检查是否有结果,判断是否有记录,返回的是一个布尔型(TRUE/FALSE)。IN是对结果值进行比较,判断一个字段是否存在于几...…

left join/right join/inner join操作演示

表A记录如下:aID        aNum1           a200501112   &nb…

SQL操作全集

下列语句部分是Mssql语句,不可以在access中使用。 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMIT…

MSSQL & Oracle 高效统计记录数

你用的什么数据库? MS SQLSERVER:,可以从系统表中快速获取 select rows from sysindexes where id = object_id(tablename) and indid in (0,1) Oracle: SELECT USER_TABLES.TABLE_NA…

Can't start a cloned connection while in manual transaction mode

昨天调试程序时出现这个问题:Can't start a cloned connection while in manual transaction mode 原因一般是当你在一个SQL SERVER的JDBC连接上执行多个STATEMENTS的操作,或者是手动事务状态(AutoCommit=fals…

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。