sqlserver关联查询的INNER JOIN使用写法

sqlserver数据库在查询过滤的时辰,经常需要联系关系其他的表结合查询,当需要同时知足两张表的成果的时辰,就可以利用INNER JOIN查询了

方式/步调

  1. 1

    建立一个姑且表,用于演示sqlserver语法中的INNER JOIN利用

    IF OBJECT_ID('tempdb..#tmp1') IS NOT NULL DROP TABLE #tmp1; 

    CREATE TABLE #tmp1(

        EName varchar(50),          -- 姓名

        EAddress varchar(200)       -- 地址

    );

  2. 2

    建立别的一个姑且表,用于演示sqlserver语法中的INNER JOIN利用

    IF OBJECT_ID('tempdb..#tmp2') IS NOT NULL DROP TABLE #tmp2; 

    CREATE TABLE #tmp2(

        EName varchar(50),          -- 姓名

        ETitle varchar(200)         -- 头衔

    );

  3. 3

    往姑且表中插入几行测试数据,此中包罗插入Null值

    insert into #tmp1(EName, EAddress) values('员工1', '中国海说神聊京');

    insert into #tmp1(EName, EAddress) values('员工10', NULL);

    insert into #tmp1(EName, EAddress) values('员工100', '法国巴黎');

    insert into #tmp2(EName, ETitle) values('员工1', NULL);

    insert into #tmp2(EName, ETitle) values('员工10', '人员');

    insert into #tmp2(EName, ETitle) values('员工99', '司理');

  4. 4

    查询姑且表中的测试数据

    select * from #tmp1;

    select * from #tmp2;

  5. 5

    利用INNER JOIN联系关系两张表,查询地址不为空的成果,这种写法其实是不保举的

    select * 

    from #tmp1 a

    inner join #tmp2 b on b.EName = a.EName and a.EAddress IS NOT NULL 

  6. 6

    利用INNER JOIN联系关系两张表,查询地址不为空的成果,保举写法,join子句中不要带过滤前提,仅含联系关系前提

    select * 

    from #tmp1 a

    inner join #tmp2 b on b.EName = a.EName 

    where a.EAddress IS NOT NULL 

  7. 7

    从上面两种写法的成果不异可以看出,利用inner join联系关系的环境,过滤语句写在join子句和where子句是一样的结果。 可是,其他联系关系,如left join前提写在两个处所的结果是纷歧样的

  • 发表于 2019-04-16 23:25
  • 阅读 ( 1140 )
  • 分类:其他类型

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
联系我们:uytrv@hotmail.com 问答工具