sqlserver技术内幕<二> 表运算符之join
发布时间:2020-12-12 12:54:21 所属栏目:MsSql教程 来源:网络整理
导读:left join,inner join,right join,cross join,full join的区别 inner join ? 只返回两张表连接列的匹配项 left join ? 第一张表的连接列在第二张表中没有匹配是 , 第二张表中的值返回 null right join ? 第二张表的连接列在第一张表中没有匹配是 第一张表
left join,inner join,right join,cross join,full join的区别inner join? 只返回两张表连接列的匹配项 left join? 第一张表的连接列在第二张表中没有匹配是 , 第二张表中的值返回 null right join? 第二张表的连接列在第一张表中没有匹配是 第一张表中的值返回 null? full join 表示把A表和B表的记录都显示出来,不符合条件的用NULL表示。 以上几种必须设置关联条件,sqlserver中可在on,where中设定,oracle必须在on中设定
cross join?是笛卡儿乘积就是一张表的行数乘以另一张表的行数,返回结果的行数为2个表行数乘积 例: [TEST@ORA1] SQL>select * from a; 编号 姓名 ---- ---------- 1000 张三 2000 李四 3000 王五 [TEST@ORA1] SQL>select * from b; 编号 商品 ---- ---------- 1000 电视机 2000 录像机 4000 自行车 [TEST@ORA1] SQL>set null 空值--这里为了显示方面我把NULL定义成了[空值] [TEST@ORA1] SQL>select a.*,b.* from a inner join b on a.编号=b.编号; 编号 姓名 编号 商品 ---- ---------- ---- ---------- 1000 张三 1000 电视机 2000 李四 2000 录像机 [TEST@ORA1] SQL>select a.*,b.* from a left join b on a.编号=b.编号; 编号 姓名 编号 商品 ---- ---------- ---- ---------- 1000 张三 1000 电视机 2000 李四 2000 录像机 3000 王五 空值 空值 [TEST@ORA1] SQL>select a.*,b.* from a right join b on a.编号=b.编号; 编号 姓名 编号 商品 ---- ---------- ---- ---------- 1000 张三 1000 电视机 2000 李四 2000 录像机 空值 空值 4000 自行车 [TEST@ORA1] SQL>select a.*,b.* from a full join b on a.编号=b.编号; 编号 姓名 编号 商品 ---- ---------- ---- ---------- 1000 张三 1000 电视机 2000 李四 2000 录像机 3000 王五 空值 空值 空值 空值 4000 自行车 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |