sqlserver连接查询如何使用
sqlserver 的连接查询几个常用的有 left join,right join ,inner join ,full join,cross join,本经验以以下两个表(product,orders)的数据为例介绍这几种连接查询的具体用法
工具/原料
sqlserver
left join的使用
1、left join 查询以左表为基准进行查询,比如查询订单对应的产品信息select A.id ,A.orderno,B.name, B.pricefrom orders Aleft join product B ON A.productid=B.id以上查询就是以orders表为基准进行查询,以下为输出结果,可以看到所连接的表(product)中没有的值会以null填充
right join的使用
1、和left join相反,在使用right join进行连接查询时,是以右侧表为基准进行查询,左没有的会以null填充 ,例如我们在product表中添加一行记录insert into productselect 11,'测试产品',32这个产品在orders表里面是没有的
2、再在查询分析器中输入以下语句select A.id ,A.orderno,B.name, B.pricefrom orders Aright join product B ON A.productid=B.id这样就可以看到我们查询的结果以右侧表为准,左表没有的就用null填充
inner join的使用
1、inner join是内连接,在使用inner join 时,不管是左表也好还是右表也好,只要他连不上就把他踢出去,类似于数学中的求交集把,例如select A.id ,A.orderno,B.name, B.pricefrom orders Ainner join product B ON A.productid=B.id以下为输出结果,只查询有匹配的值,所以使用inner join时可能会丢掉数据
full join的使用
1、full join 为全连接查询,其综合了left join 和right join的特点,只要没有匹配行就用null填充,例如select A.id ,A.orderno,B.name, B.pricefrom orders Afull join product B ON A.productid=B.id其输出结果如下
cross join的使用
1、cros衡痕贤伎s join 为交叉查询,使用交叉连接所产生的结果为所连接表的笛卡尔积,也就是返回行数=(table1的行数)*(table2的行数)*...*(tablen的行数),还是以以下语句为例,注意这里不需要on来指定连接条件select A.id ,A.orderno,B.name, B.pricefrom orders Across join product B以下为输出结果注:交叉连接往往在求组合中用的比较多比如可以利用交叉连接计算出双色球的所有组合这样的