MySQL Inner Join 和 Left Join 详解

这篇具有很好参考价值的文章主要介绍了MySQL Inner Join 和 Left Join 详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MySQL Inner Join 和 Left Join 详解

Inner Join

Inner Join 是一种 SQL 查询语句,用于在两个或多个表中查找共有的行。Inner Join 的语法如下:

SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name;

其中,table1table2 是需要连接的表,column_name 是需要返回的列名。ON 关键字用于指定连接条件。Inner Join 只返回两个表中都存在的行。

假设我们有两个表 customersorders,分别存储了客户信息和订单信息,现在需要查询有订单信息的每个客户的姓名和订单号。可以使用 Inner Join 如下:

SELECT customers.customer_name, orders.order_number FROM customers INNER JOIN orders ON customers.customer_id = orders.customer_id;

在上面的示例中,customersorders 表通过 customer_id 列进行连接,只返回了两个表中都存在的行。如果某个客户没有订单,则该客户不会被包含在结果中。

Left Join

Left Join 是一种查询语句,用于从左表中返回所有的行以及与右表匹配的行。如果右表中没有匹配的行,则返回 NULL 值。Left Join 的语法如下:

SELECT column_name(s) FROM table1 LEFT JOIN table2 ON table1.column_name = table2.column_name;

其中,table1table2 是需要连接的表,column_name 是需要返回的列名。ON 关键字用于指定连接条件。如果右表中没有与左表匹配的行,则返回 NULL 值。

假设我们有两个表 customersorders,分别存储了客户信息和订单信息,现在需要查询所有客户以及他们的订单号(如果有订单的话)。可以使用 Left Join 如下:

SELECT customers.customer_name, orders.order_number FROM customers LEFT JOIN orders ON customers.customer_id = orders.customer_id; 文章来源地址https://www.toymoban.com/news/detail-450721.html

在上面的示例中,customers 表中的所有行都会被包含在结果中,而 orders 表中没有匹配的行则会返回 NULL 值。

Inner Join 和 Left Join 的比较

Inner Join 和 Left Join 之间的主要区别在于返回的结果集不同。Inner Join 只返回出现在两个表中的共有行,而 Left Join 则返回左表中所有的行以及与右表匹配的行(如果有的话),并在右表中没有匹配的地方补充 NULL 值。

通常,Inner Join 用于查找几个表之间的交集,而 Left Join 则用于查找某个表中匹配不到的行。使用 Inner Join 可以提高查询效率,因为它只返回符合条件的结果。但如果需要查询某个表中所有的行,包括没有匹配的行,则应该使用 Left Join。

结论

Inner Join 和 Left Join 都是常用的 SQL 查询语句,用于从多个表中获取有用的信息。在使用这两种 Join 时,需要根据实际情况选择合适的语句,以达到最佳的查询效果。希望本文对您在数据处理和数据库查询方面有所启发。

示例代码

以下是用于演示 Inner Join 和 Left Join 的 SQL 语句以及相应的结果:

Inner Join 示例

SELECT customers.customer_name, orders.order_number FROM customers INNER JOIN orders ON customers.customer_id = orders.customer_id;

customer_name order_number
John 1001
Mike 1002
Sarah 1003

Left Join 示例

SELECT customers.customer_name, orders.order_number FROM customers LEFT JOIN orders ON customers.customer_id = orders.customer_id;

customer_name order_number
John 1001
Mike 1002
Sarah 1003
Mary NULL

到了这里,关于MySQL Inner Join 和 Left Join 详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 工作的记录 left join on and 和 inner join on and的多条件查询区别

    eElasticsearch使用——结合MybatisPlus使用ES es和MySQL数据一致性 结合RabbitMQ实现解耦-CSDN博客 关于相对定位与绝对定位的区别_相对定位和绝对定位的区别-CSDN博客 display:flex(弹性盒子布局)详解_display: flex-CSDN博客 justify-content - CSS:层叠样式表 | MDN (mozilla.org) align-items - CSS:层叠样式

    2024年02月10日
    浏览(47)
  • Mysql表关联简单介绍(inner join、left join、right join、full join不支持、笛卡尔积)

    A 是1、2、3 B是2、3、4 A、B的交集是A∩B = 2、3 A、B的并集是 AUB = 1、2、3、4 A、B的差集是 A-B = 1 B、A的差集是 B-A = 4 造数据 select A. ,B. from xin_stu_t_bak A inner join xin_teach_t_bak B on A.relation_id = B.id order by A.id; select distinct A. ,B. from xin_stu_t_bak A inner join xin_teach_t_bak B on A.relation_id = B.id

    2024年01月17日
    浏览(53)
  • MySQL多表查询内连接外连接详解,join、left join、right join、full join的使用

    目录 1、多表查询概览 1.1、分类 1.2、外连接的分类 1.3、常用的SQL语法标准 2、内外联接案例 2.1、初始化表 2.2、内连接 2.3、外连接案例 2.4、全连接案例 2.5、union和union all 2.6、实现MySQL全连接 2.7、内外连接面试基础 2.8、SQL99多表查询新特性 1.1、分类 可以根据3个角度进行分类

    2024年02月05日
    浏览(65)
  • SQL中的——左连接(Left join)、右连接(Right join)、内连接(Inner join)

    最近有一个开发需求,需要实现一个复杂年度报表,前后端都是博主开发,这里的业务逻辑比较复杂,也很锻炼sql能力,这里博主也将表的内外连接做了一个整理分享给大家 首先还是介绍一下这三个的定义 1.Left join:即 左连接 ,是以左表为基础,根据ON后给出的两表的条件

    2024年02月12日
    浏览(47)
  • mysql查询语句中,是join先执行还是where先执行?

    在 MySQL 中,WHERE 子句会先于 JOIN 子句执行。 JOIN 子句用于连接两个或多个表,在 JOIN 子句中可以使用 ON 或 USING 子句来指定连接条件。 JOIN 子句会从两个表中返回符合连接条件的行,这些行会被合并成一个结果集。 而 WHERE 子句用于过滤查询结果集中的行,它可以使用各种条

    2024年02月14日
    浏览(41)
  • SQL 语句中 left join 后用 on 还是 where,区别大了!

    目录 情况 小结 举例         前天写SQL时本想通过 A left B join on and 后面的条件来使查出的两条记录变成一条,奈何发现还是有两条。         后来发现 join on and 不会过滤结果记录条数,只会根据and后的条件是否显示 B表的记录,A表的记录一定会显示。         不

    2024年02月14日
    浏览(38)
  • MySQL left join 和 left outer join 区别

    先说结论: left join 和 left outer join 的结果是一致的。 我不知道各位大神是怎么测试的,网上面就说两个不一样,我A、B表都是有重复数据的,为啥结果是一样的。 表A 表B 左连接 左外连接 以下MySQL官方文档的说明(2664页),outer join是为了某些第三方程序的兼容性而存在的。 微软

    2024年02月10日
    浏览(41)
  • 业务数据LEFT JOIN 多表查询慢--优化操作

    首先你会想到,给表加索引,那么mysql会给主键自动建立索引吗? 会的,当然会。 在我们查询的业务表操作的时候,表业务数据庞大起来的时候,以及left join多的时候,甚至多表关联到几十张表的时候,查询是慢到不行。 这时候,只需要给表join查询的字段,及表结构,进行索

    2024年02月02日
    浏览(42)
  • SQL联表查询LEFT JOIN 数据去重复

    使用left join联表查询时,如果table1中的一条记录对应了table2的多条记录,则会重复查出id相同的多条记录。 解决方法: 将查询结果作为中间表,使用group by 进行去重 如果想对group by后的数据计算count,可以将查询结果作为中间表再计算count

    2024年02月11日
    浏览(66)
  • MSQL系列(十一) Mysql实战-Inner Join算法底层原理及驱动表选择

    Mysql实战-Inner Join算法驱动表选择 前面我们讲解了B+Tree的索引结构,及Mysql的存储引擎MyISAM和InnoDB,也详细讲解下 left Join的底层驱动表 选择, 并且初步了解 Inner join是Mysql 主动选择优化的驱动表,知道索引要建立在被驱动表上 那么对于Inner join 来说, 到底什么是小表? 1.建表及测

    2024年02月07日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包