Mysql Join 多条件的小坑

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

一般情况我们可能只在join on 后面添加唯一的关联条件,但是如果在on后面添加多个条件会发生什么呢?

对于inner join

SELECT * FROM a JOIN b
    ON a.user_id = b.user_id AND a.id = 1;

表现与在where后面添加条件一致

但是对于left join,情况就比较微妙了。

  • 对于左表添加条件,没有任何效果。表a的其他id数据仍然查询出来了
  • 对于右表添加条件,确实筛选了右表数据。右表b要么没有数据要么id只等于1
SELECT * FROM a LEFT JOIN b
    ON a.user_id = b.user_id AND a.id = 1;

SELECT * FROM a LEFT JOIN b
    ON a.user_id = b.user_id AND b.id = 1;

其实从left join的原义也可以知道,会保留join时左表的所有项,那么就不应该在join的时候将左表数据筛选掉。而右表本来是能够筛选的文章来源地址https://www.toymoban.com/news/detail-726141.html

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

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

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

相关文章

  • MySQL - Left Join和Inner Join的效率对比,以及优化

    最近在写代码的时候,遇到了需要多表连接的一个问题,初始sql类似于: 这样的多个left join组合,总觉得这种写法是有问题的,后续使用inner join发现速度要比left join快一些 关于left join的概念,大家是都知道的(返回左边全部记录,右表不满足匹配条件的记录对应行返回nul

    2024年02月03日
    浏览(52)
  • 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 类型

    SQL Join 类型的区别 Inner Join: 左,右表都有的数据 Left Join: 左表返回所有的行, 右表没有的补充为 NULL Right Loin: 右表返回所有的行, 左表没有的补充为 NULL Full Outer Join: 左表 + 右表 所有数据 用户表: 答题表: 查询左表 和 右表都有的数据 用户表 user_no = 1000 和 答题表 user_no = 6543 ,

    2024年02月08日
    浏览(30)
  • 深入理解MySQL中的Join算法

    本文已收录至GitHub,推荐阅读 👉 Java随想录 微信公众号:Java随想录 原创不易,注重版权。转载请注明原作者和原文链接 目录 什么是Join Index Nested-Loop Join Block Nested-Loop Join MRR BKA 总结 在数据库处理中,Join操作是最基本且最重要的操作之一,它能将不同的表连接起来,实现对

    2024年02月08日
    浏览(45)
  • mysql的JOIN用法详解-附带查询示例

    在 SQL 中,JOIN 是用于将多个表中的数据连接在一起的操作。它通过指定连接条件将两个或多个表中符合条件的行组合起来,产生一个新的结果集。 SQL 中常见的 JOIN 类型包括 INNER JOIN 、 LEFT JOIN 、 RIGHT JOIN 和 FULL OUTER JOIN 。 下面详细介绍这些 JOIN 类型的用法: 在连接条件中,

    2024年04月23日
    浏览(43)
  • MSQL系列(九) Mysql实战-Join算法底层原理

    Mysql实战-Join算法底层原理 前面我们讲解了B+Tree的索引结构,及Mysql的存储引擎MyISAM和InnoDB,今天我们来详细讲解下Mysql的查询连接Join的算法原理 Join算法分类 在Mysql的查询过程中,我们都知道涉及多表查询,我们都会使用join来连接多个表进行查询,join的本质就是循环每个表进

    2024年02月08日
    浏览(45)
  • MySQL中的Join 的算法(NLJ、BNL、BKA)

    本文已收录至Github,推荐阅读 👉 Java随想录 微信公众号:Java随想录 目录 摘要 什么是Join Index Nested-Loop Join Block Nested-Loop Join MRR BKA 总结 Join是MySQL中最常见的查询操作之一,用于从多个表中获取数据并将它们组合在一起。Join算法通常使用两种基本方法:Index Nested-Loop Join(N

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

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

    2024年02月14日
    浏览(41)
  • mysql的两张表left join 进行关联后,索引进行优化案例

    1.表1没加索引  2.表2没加索引 3.查看索引 1.表1添加索引   2.表2添加索引   3.查看  

    2024年02月12日
    浏览(46)
  • MySQL 数据库操作指南:LIMIT,OFFSET 和 JOIN 的使用

    您可以通过使用\\\"LIMIT\\\"语句来限制查询返回的记录数量。以下是一个示例,获取您自己的Python服务器中\\\"customers\\\"表中的前5条记录: 如果您想返回五条记录,从第三条记录开始,可以使用\\\"OFFSET\\\"。以下是一个示例: 通过使用JOIN语句,您可以基于它们之间的相关列合并两个

    2024年02月05日
    浏览(49)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包