首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

sql连接查询中on筛选与where筛选的区别

在连接查询语法中,另人迷惑首当其冲的就要属on筛选和where筛选的区别了, 在我们编写查询的时候, 筛选条件的放置不管是在on后面还是where后面, 查出来的结果总是一样的, 既然如此,那为什么还要多此一举的让...sql中的连接查询分为3种, cross join,inner join,和outer join , 在 cross join和inner join中,筛选条件放在on后面还是where后面是没区别的...,极端一点,在编写这两种连接查询的时候,只用on不使用where也没有什么问题。...而对于那条地址筛选在where条件中的sql,这一步便起到了作用,将所有地址不属于杭州的记录筛选了出来 ?...通过上面的讲解,已经能反应出在outer join中的筛选条件在on中和where中的区别,开发人员如能详细了解之中差别,能规避很多在编写sql过程中出现的莫名其妙的错误。

3.4K80

软件测试|SQL指定查询条件,WHERE的使用

前言使用 SQL 从单个表或者多表联合查询数据时,可以使用 WHERE 子句指定查询条件。当给定查询条件时,只有满足条件的数据才会被返回。建议您使用 WHERE 子句来过滤记录,以获取必要的结果集。...语法WHERE 子句用于 SELECT 语句时的基本语法如下:SELECT column1, column2, columnNFROM table_nameWHERE condition注:可以在 condition...条件中使用 >、使用 AND、OR 等逻辑运算符来指定多个条件,或者使用 LIKE、NOT LIKE 等进行模糊匹配。...示例我们继续使用之前使用过的player表,表信息如下:+--------+-----+--------+---------+|name | age |position|country |+--...中WHERE子句的使用,后续我们将继续介绍SQL的使用。

98120
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    sql中的过滤条件放在on和where的区别

    最近遇到相关业务,想揪一下sql的中的left join 或者right join 或者inner join 中的 on和where的区别,想了解这个首先我们要了解两个基础的知识。...1.join的三种连接方式的区别: left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录...inner join(等值连接) 只返回两个表中联结字段相等的行 2....join 中on 和 where 是没有区别的 下面我们来执行sql语句看看 left join select a....类似:如果是right join的话 right join时进行笛卡尔积之后on后面的条件只对左表有效 ,并且如果左表用了where还是两个表都会取交集,进行过滤。 有对结论有疑问者,欢迎讨论~~~

    3.8K10

    EF Linq中的左连接Left Join查询

    linq中的join是inner join内连接,就是当两个表中有一个表对应的数据没有的时候那个关联就不成立。 比如表A B的数据如下 ?...from a in A join b in B on a.BId equals b.Id select new {a.Id, b.Id} 的结果是 {1,1} {2,2} {4,4} 因为3在B表中不存在...,所以连接失败,不返回,但是当我们需要返回一个{3, null}的时候怎么办呢,这就是左连接,反之,如果是{null,3} 则是右连接。...re这个IEnumerable中了,所以select的时候从re集合去取 这样即是左连接,返回结果是 {1,1} {2,2} {3,null} {4,4} 可以看到和直接内连接的join差距在多了into...,把可能为空的那个集合(表)放到一个集合,然后再对接进行DefaultIfEmpty(),再从这个结果中去取 重点就是into到集合,再DefaultIfEmpty()

    5K10

    SQL中JOIN时条件放在Where和On的区别

    背景 SQL中JOIN子句是用于把来自两个或多个表的数据连接起来,在这个过程中可能会添加一些过滤条件。昨天有小伙伴问,如下图的这两种SQL写法查询结果是否会一样?(好像这是某一年阿里的面试题) ?...这个问题提出来以后,多数小伙伴的回答是:查询结果应该是一样的吧,只是查询效率不一样。我当时的回答是,在Inner Join时这两种情况返回的结果是一样的,在Left、Right等情况时结果不一样。...结论:Left Join时过滤条件放在on和where中返回结果不一致。 原因分析 可以这么理解,当两张表在Left Join时,会生成一张连接临时表,然后再将这张连接临时表返回给用户。...在On的情况下,是在生成临时表时起作用,但由于Left Join的性质,就是他不管On里面的过滤条件是否为真,都会返回左表里的记录。对于不满足条件的记录,右表字段全部是NULL。...在Where的情况下,是在临时表生成好以后起作用,在对临时表进行过滤。此时,只要条件不为真的行,全部都过滤掉了。 — 完 —

    3.5K10

    在 SQL 中,如何使用子查询来获取满足特定条件的数据?

    在 SQL 中,可以使用子查询来获取满足特定条件的数据。子查询是嵌套在主查询中的查询语句,它返回一个结果集,可以用来过滤主查询的结果。...下面是使用子查询来获取满足特定条件的数据的一般步骤: 在主查询中使用子查询,将子查询的结果作为条件。 子查询可以在主查询中的 WHERE 子句、FROM 子句或 HAVING 子句中使用。...子查询可以返回单个值或多个值,具体取决于使用的运算符和子查询的语法。 以下是一些示例: 使用子查询在 WHERE 子句中过滤数据: SELECT column1, column2, ......FROM table WHERE column IN (SELECT column FROM table WHERE condition); 使用子查询在 FROM 子句中创建临时表: SELECT column1...FROM (SELECT column FROM table WHERE condition) AS temp_table; 使用子查询在 HAVING 子句中过滤数据: SELECT column1,

    24010

    SQL中的左连接与右连接,内连接有什么区别

    大家好,又见面了,我是你们的朋友全栈君。 例子,相信你一看就明白,不需要多说 A表(a1,b1,c1) B表(a2,b2) 左连接: select A.....* from A left outer join B on(A.a1=B.a2) 结果是: 右连接: select A.....* from A right outer join B on(A.a1=B.a2) 结果是: 内连接: 自然联结:SELECT * FROM a, b where a.a1=b.a2,这两种写法一样...(内连接和自然联结一样,一般情况下都使用自然联结) 左连接:左边有的,右边没有的为null 右连接:左边没有的,右边有的为null 内连接:显示左边右边共有的 版权声明:本文内容由互联网用户自发贡献...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    2K20

    SQL中的连接查询与嵌套查询「建议收藏」

    自然连接:在等值连接中把目标中重复的属性列去掉的连接查询 下面考虑用自然连接实现上述例子: SELECT Student.Sno,SName,SSex,Sdept,Cno,GradeFROM Student...表的连接 查询结果: 外连接查询: 分为左外连接,右外连接, 左外连接:根据左表的记录,在被连接的右表中找出符合条件的记录与之匹配,找不到匹配的,用null填充 右连接:根据右表的记录...,在被连接的左表中找出符合条件的记录与之匹配,找不到匹配的,用null填充 例3: 查询缺少成绩的的学生号和课程号: SELECT Student.Sno,CnoFROM StudentLEFT...例1:找出至少一门课程的成绩在90分以上的女学生的姓名 分析:已知的是分数大于90分这个条件,通过这个条件找出Study表中大于90分所对应的Sno,再通过连接查询Study表中对应Sno的SName...在Student表中找出对应的学生的姓名。

    5K20

    Excel公式技巧14: 在主工作表中汇总多个工作表中满足条件的值

    我们可能熟悉使用INDEX、SMALL等在给定单列或单行数组的情况下,返回满足一个或多个条件的值的列表。这是一项标准的公式技术。...可以很容易地验证,在该公式中的单个条件可以扩展到多个条件,因此,我们现在有了从一维数组和二维数组中生成单列列表的方法。 那么,可以更进一步吗?...本文提供了一种方法,在给定一个或多个相同布局的工作表的情况下,可以创建另一个“主”工作表,该工作表仅由满足特定条件的所有工作表中的数据组成。并且,这里不使用VBA,仅使用公式。...D2:D10"),"Y")) 如果不熟悉跨多个工作表使用公式的技术,那么应记下使用INDIRECT的这种公式构造,因为它实际上是我们执行此类计算的唯一方法。...D2:D10"),"Y")) 然后,将这组代表工作表名称的文本字符串的两端连接,在后面是所使用的工作表区域(D2:D10),在前面用单个撇号连接。

    9.1K21

    mybatis 中 Example 的使用 :条件查询、排序、分页

    example = new Example(RepaymentPlan.class); // 排序 example.orderBy("id"); // 条件查询...PageHelper 使用详解见文章:分页插件pageHelpler的使用(ssm框架中)服务器端分页 3....更多关于 Example 的使用说明见文章: java 查询功能实现的八种方式 MyBatis : Mapper 接口以及 Example 使用实例、详解 4....当只是查询数据,不需要返回总条数时可选择此方法: PageHelper.startPage(第几页, 20,false); // 每次查询20条 当数据量极大时,可以快速查询,忽略总条数的查询,减少查询时间...------------------------------------------------- 2019.5.13 后记 : 1)分页的写法 下图中黄框中的写法运行 比红框中 快,不知道是不是插件本身也会有费时

    29.2K42

    你必须掌握的一些常见的SQL语句,包含单表查询、高级查询(连接查询、复合条件查询、嵌套查询)

    分享一些常见的SQL语句,包含单表查询、高级查询(连接查询、复合条件查询、嵌套查询等)。...Students where SName='张三') and SName'张三' --查询比张三年纪大的学生的姓名、性别 select SName as '姓名',SGender as '性别'...from Students where SAge>(select sage from students where sname='张三') --查询张三的学号和其选修的课程号和成绩 select sc.SCCNo...SAge from Students where SName='张三') --查询选修每门课程中成绩小于其平均成绩的学生学号 select sc1.SCId as '学生学号' from StudentCourse...sc1 where SCGrade< ( select AVG(SCGrade) from StudentCourse sc2 where sc2.SCCNo=sc1.SCCNo ) --查询张三选修高等数学上的课程的成绩

    2.6K70

    Global in在Clickhouse非分布式表查询中的使用

    实际业务场景会比这个查询复杂一些,可能会有更多的“user_id in xxx”条件(因为实际业务中属性和行为都可能分布在多个表中),但查询语句的模式不会变。...笔者信心满满的把这个查询语句丢到Clickhouse中,却发现,上述简单的查询却要执行2-3s,而单独执行内层的子查询只需要0.3-0.4s;多个条件的平铺倒是还好,只会增加一点点查询耗时,但业务场景复杂一点...key,将Data Part分为多个数据块(Granule),数据块就是MergeTree表中数据读取的最小单元。...在prewhere阶段之后,从磁盘中读取了所有满足条件的数据块,但并不是其中的每一行都满足“user_id in A”的条件,于是必须要执行where阶段的行扫描,精准过滤出哪些行满足“user_id...例如,当user表很大,而A子查询执行的开销很小时,全表扫描user表中的数据开销远比多执行一次A子查询开销大,这时使用prewhere优化可以提升执行效率。

    5.1K52

    SQL92、SQL99中的多表连接查询区别

    SQL99多表连接查询 1. cross join(交叉连接) 交叉连接会产生一个笛卡尔积 select * from emp cross join dept; 在笛卡尔积中, 有很多数据是无意义的...特点: a) 在自然连接时, 自动进行所有同名列的等值连接, 不需 要写连接的条件 b) 同名列只显示一列, 而且在使用时, 不能加表前缀(e....deptno=20; 5. on 子句 on 子句是使用非常广泛的子句, 它可以被用来指定连接的(特别是非等值连接) 条件....=d.deptno where d.deptno=30; c) 查询所有员工的姓名, 部门名称, 工资及工资等级 N 张表连接, 至少需要 N-1 个连接条件 select e.ename,...外连接 外连接除了能显示满足连接条件的数据以外, 还用于显示不 满足连接条件的数据 左外连接 left [outer] join, 表示左外连接, 可以显示左表中不满足 连接条件的数据 select

    2.2K10

    谈谈SQL查询中回表对性能的影响

    10; 业务需要,LIKE 的时候必须使用模糊查询,我当然知道这会导致全表扫描,不过速度确实太慢了,直观感受,全表扫描不至于这么慢!...我使用的数据库是 PostgreSQL,不过它和 MySQL 差不多,也可以 EXPLAIN: SQL With LIMIT 如上所示:先按照 created_at 索引排序,再 filter 符合条件的数据...要想搞清楚缘由,你需要理解本例中 SQL 查询的处理流程:当使用 limit 时,因为只是返回几条数据,所以优化器觉得采用一个满足 order by 的索引比较划算;当不使用 limit 时,因为要返回所有满足条件的数据...不过就算知道这些还是不足以解释为什么在本例中全表扫描反而快,实际上这是因为当使用索引的时候,除非使用了 covering index,否则一旦索引定位到数据地址后,这里会有一个「回表」的操作,形象一点来说...,就是返回原始表中对应行的数据,以便引擎进行再次过滤(比如本例中的 like 运算),一旦回表操作过于频繁,那么性能无疑将急剧下降,全表扫描没有这个问题,因为它就没用索引,所以不存在所谓「回表」操作。

    2.4K20

    《SQL 中复杂条件多表关联查询的性能优化秘籍》

    多表关联查询是在关系型数据库中获取全面和准确数据的常见操作。然而,当条件变得复杂,涉及多个表的多个字段以及各种逻辑运算时,查询的性能可能会急剧下降。...在实际应用中,需要根据业务需求选择合适的连接方式。例如,如果只需要获取两个表中匹配的数据,内连接是合适的选择;如果希望即使在右表没有匹配记录时也能返回左表的所有数据,左连接则更为适用。...在编写复杂条件的多表关联查询时,明确查询的目的和所需的数据是关键。避免不必要的表关联和字段选择可以大大减少数据量和计算量。同时,合理使用索引也是提高性能的重要手段。...在实际开发中,我们可以通过查看查询的执行计划来分析和优化性能。执行计划展示了数据库是如何执行查询操作的,包括表的扫描方式、索引的使用情况以及数据的连接顺序等。...总之,在 SQL 中实现复杂条件的多表关联查询并提高性能需要综合考虑多个因素,包括连接方式的选择、索引的优化、子查询的运用、数据库配置以及对执行计划的分析。

    12910

    SQL JOIN 子句:合并多个表中相关行的完整指南

    JOIN 以下是SQL中不同类型的JOIN: (INNER) JOIN:返回在两个表中具有匹配值的记录 LEFT (OUTER) JOIN:返回左表中的所有记录以及右表中匹配的记录 RIGHT (OUTER...) JOIN:返回右表中的所有记录以及左表中匹配的记录 FULL (OUTER) JOIN:在左表或右表中有匹配时返回所有记录 这些JOIN类型可以根据您的需求选择,以确保检索到所需的数据。...SQL LEFT JOIN关键字 SQL LEFT JOIN关键字返回左表(table1)中的所有记录以及右表(table2)中的匹配记录。如果没有匹配,则右侧的结果为0条记录。...SQL LEFT JOIN 演示数据库 在本教程中,我们将使用著名的Northwind示例数据库。...我们可以使用LEFT JOIN将两个表连接在一起,以便即使某些客户没有订单,它们仍然会在结果中显示。

    47010

    使用ADO和SQL在Excel工作表中执行查询操作

    学习Excel技术,关注微信公众号: excelperfect 我们可以将存储数据的工作表当作数据库,使用ADO技术,结合SQL查询语句,可以在工作表中获取满足指定条件的数据。...图1 下面,需要将工作表Sheet2的数据中物品为“苹果”的数据行复制到工作表Sheet3中,如下图2所示。 ?...在同一代码中,只需要连接数据库一次,接着可以执行多个查询操作,无需每次查询前都进行连接。...SQL查询语句为: query = "Select * from [" & wksData.Name _ & "$] Where 物品='苹果' " 在工作表wksData中查询物品为“苹果”的记录...query = "Select * from [" & wksData.Name _ & "$] Where 编号 like '%200%' " 也可以选择获取满足条件的记录中的字段。

    4.7K20
    领券