美文网首页
17、左连接语法及应用

17、左连接语法及应用

作者: 小碧小琳 | 来源:发表于2018-12-06 21:55 被阅读0次

一、左连接的动态演示

现在有两个表,一个goods表(不包含cat_name),一个是category表(只有cait_id和cat_name两个字段)

我们在goods表中只选择三个字段,然后与category表进行对比,如下图:

左边goods表中有32个物品,右边category有14个cat_name(少了11)。那么左边goods表与右边category表从上到下两两交叉匹配,共有32*14次匹配。

其中,左边goods表不动,右边category表从上往下进行匹配,在goods表中第一行KD876挨个匹配时,与cat_id=15不匹配,cat_id=14不匹配,一直到cat_id=4时匹配。

然后,第二行诺基亚N85同样匹配,与category表中的cat_id=8进行匹配,专门留下这一行的数据。

按照这个思路,goods表不动,category表不断地从上往下循环滑动,与左边的每一行进行匹配并找到相匹配的行。

二、左连接的语法表示

假设A表在左,不动。B表在A表的右边滑动。
A表与B表通过一个关系来筛选B表的行。

A left join B on 条件 条件为真,则B表对应的行取出

其中,左半部分

也就是说,可以把左半部分看成一个表C,然后对C表可以再做查询。

问:C表可以查询的列有哪些?
答:AB的列都可以查(因为是两张表组成的新表),自然where,group,having,order by,limit照常使用。

三、报价表的第三个改进版(用左连接来查询)

用左连接,新手的话建议分成两步来写:

  • 第一步:先根据“A left join B on 条件”得到已经关联好的表C(即把下列语句得到的结果集当做表C看)
  • 第二步:从表C中查询,得到最终想要的结果

最终,也就是如下语句:

带入PHP中,利用PHP得到报价单:

可见,结果与前两篇文章的结果是相同的。这次的实现效率,提升了许多。因为在左连接的过程中,用上了索引(在每一次匹配中,直接利用索引找到该行,有点类似于哈希表的效率?暂时不清楚)。

比如,我们想要在得到表C以后,我们直接用where筛选出第4个栏目的商品。

其中,其中左连接以后,再从得到的结果集中查询cat_id等于4的商品。

相关文章

  • 17、左连接语法及应用

    一、左连接的动态演示 现在有两个表,一个goods表(不包含cat_name),一个是category表(只有ca...

  • Chapter 10.SQL99 语法

    阅读原文 Chapter 10.sql99语法 /* 语法: 分类: 内连接(★):inner 外连接左外(★):...

  • MySQL笔记(五)之表的连接

    MySql数据库中表的连接一共有如下几种 INNER JOIN 内连接 语法: LEFT JOIN 左连接 语法:...

  • 链接查询

    内连接: 基本语法: 左表 [inner] join 右表 on 左表.字段 = 右表.字段;...

  • 连接查询

    1.分类 内连接等值非等值自连接 外连接左外右外全外(mysql不支持) 2.语法 1、内连接 语法:select...

  • SQL基础-3

    1、99语法内连接 等值连接 非等值连接外链接 全连接 左外链接 右外链接2、视图与索引创建视图 删除视图索引 ...

  • pipeline语法使用 maven 构建java应用

    基于pipeline语法 使用 maven 构建java应用 这个git仓库连接的代码可以从 流水线语法...

  • YAML语法及应用

    YAML 试图用一种比XML更敏捷的方式,来完成XML所完成的任务,在未来可能会成为配置文件一个主流,应用场景大多...

  • 消除左递归及提取左公因子

    相关文章 消除左递归及提取左公因子最左推导、最右推导及其语法树构建FIRST集合、FOLLOW集合以及LL(1)文...

  • 最左推导、最右推导及其语法树构建

    相关文章 消除左递归及提取左公因子最左推导、最右推导及其语法树构建FIRST集合、FOLLOW集合以及LL(1)文...

网友评论

      本文标题:17、左连接语法及应用

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