美文网首页
19、左连接面试题讲解

19、左连接面试题讲解

作者: 小碧小琳 | 来源:发表于2018-12-13 22:03 被阅读0次

一、面试题

1.1、表结构

有两个表,一个是赛程表,出于节省空间考虑,并没有把主队与客队的名称写进去,包含以下字段:

另外有一张专门的参赛队伍表:

由team_ID 与 team_name两个字段组成。(类似于前面左连接例子中的商品表与商品名称两个表)

1.2、构造表并插入数据

用sql构建这两张表,这里偷懒就不为每个字段赋默认值了。
其中字母m代表match表示比赛,字母t代表team表示队伍,注意不能用match单词作为表名,因为“match”是sql中的关键字。

赛程表 team表

1.3、题目:

已知有两个如上的表,现在要求取出6月1号到7月1号之间的比赛的结果,并且队伍id应显示出队名才行。也就是,最终结果样例应该如下:

二、题目思路:

根据题意,“队伍id显示出队名”,想到一定会用左连接来做。但是有h_id与g_id两个字段,一个左连接是做不出来的。具体应该怎么做呢?

由简入繁,由浅入深,解决问题的王道

2.1、第一步:调整字段的顺序,向最后的结果靠齐。

调整顺序

2.2、第二步:再前进一小步,根据h_id,左连team表,查出主队的队伍名称(即简单的2张表左连接)

h_id表

其中t_name就是从team表中左连接以后,得到的。

2.3、第三步:同理于上面,根据g_id得到客队的队伍名称。

想要得到g_id,我们就把h_id表看成结果,然后和team表,再一次左连即可。

也就是说我们可以把 m left join on m.h_id = t.t_id 这个语句当做一个表名来看。于是,再次左联一次,得到如下语句:

但还是出错了。注意看,在第一个左联中,有m,t两个表,第二个左联表中,还有一个t表。表名不唯一,导致的错误。

解决方法:起个别名就可以解决,select 列名 as 别名,那么也就可以 from 表名 as 表别名。
比如,在下面from中,让第一个t变成t1。重新执行h_id的语句

发现结果跟(h_id表)中结果是一样的。

同样,我们也可以让第二天t变成t2,注意,后面调用该t表名时,都要改成t2才行,在t_name也有重复情况,前面需要加上表名加以区分。

2.4、快要成功了

我们把多余的列去掉即可,如下:

2.5、最后一步

题目要求取出6月1号到7月一号之间的。于是想到表查询的的where子句。

前面说过,左连接之后,得到的是一张表,那么where,group,等五个子句也是照常使用的。

因此加一个where筛选条件即可。
这里我们认为“之间”代表包括边界值,那么就用between and 即可。

得到最终结果。

一个简单的三表联查的题目。

相关文章

  • 19、左连接面试题讲解

    一、面试题 1.1、表结构 有两个表,一个是赛程表,出于节省空间考虑,并没有把主队与客队的名称写进去,包含以下字段...

  • sql左连接、内连接、右连接实例讲解

    在面试的过程中,我们经常会碰到关于数据库的一些问题,其中出现频率比较高的有关于sql的左连接、内连接、外连接等问题...

  • Mysql知识点

    左连接右连接:左连接where只影向右表,右连接where只影响左表 内连接:显示左右边共有的 executeUp...

  • 左连接

    SELECT emp_id, emp_name, gender, email, d_id ,dept_id,dep...

  • 多表查询和事务

    多表查询包括内连接和外连接内连接: 隐式内连接 显示内连接 外连接: 左外连接 右外连接 左外连接: 在内连接的基...

  • mysql 面试问题

    左连接和右连接有什么区别?左连接 left join ...... on:左表中的数据全部查询,右表中只查询...

  • MySQL左连接与右连接

    先通过下面两个表展示一下左连接和右连接的结果 1.左连接与右连接 员工表: 学生表: 左连接 右连接 通过以上两个...

  • EF Core 备忘

    模糊查询sql linq 内连接查询sql linq 左连接查询sql linq 左连接查询(连接内带条件)sql...

  • mysql连接查询,自关联,子查询

    mysql支持三种类型的连接查询,分别为:内连接查询,左连接查询,右连接查询 内连接查询: 左连接查询: 右连接查...

  • left join and 和 where and 的区别

    问:left join on后and连接和where后用and连接 答:left join左连接,左表所有数据拼接...

网友评论

      本文标题:19、左连接面试题讲解

      本文链接:https://www.haomeiwen.com/subject/tshmhqtx.html