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

SQL语句中 where 和 on 的区别

最近面试时候碰到一道题,关于数据库左连接和内连接中and和where的区别,网上看了看资料,加深一下印象,大家也可以看看。...先说结论: 在使用left join左连接时,on and和on where条件的区别如下: 1、on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。...在使用inner join内连接时,不管是对左表还是右表进行筛选,on and和on where都会对生成的临时表进行过滤。...这下看出来不对了,id为4的记录还在,这是由left join的特性决定的,使用left join时on后面的条件只对右表有效(可以看到右表的id=4的记录没了)。...where的过滤作用就出来了,右连接的原理是一样的。到这里就真相大白了:inner join中on和where没区别,右连接和左连接就不一样了。 本文转载自: SQL语句中where和 on的区别?

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

    SQL语句中where 1=1的意义

    我们在看别人项目的时候,很多时候看到这样的SQL语句: select * from user where 1=1 其中这个where1=1是有特殊意义的,包含以下两种情境:动态SQL拼接和查询表结构。...一 动态SQL拼接 适合多条件搜索,当要构造动态sql语句时为了防止sql语句结构不当,所以加上where 1=1 ,这样SQL语句不会报错,例如: String sql="select * from...当我们的SQL语句加上where 1=1的时候,就不报错了,如下: String sql="select * from table_name where 1=1"; if( conditon 1) {...sql=sql+" and var2=value2"; } if(conditon 2) { sql=sql+" and var3=value3"; } SQL语句加上where 1=1,只是为了满足多条件查询页面中不确定的各种因素而采用的一种构造一条正确能运行的动态...SQL语句的一种方法。

    3.7K51

    SQL - on和where的区别

    on和where的区别 on和where后都表示查询条件,它们的区别如下: 1、on只能用于连接查询(内连接、外连接、交叉连接),在其他情况下使用on会报错,比如: 1 select* from test...on id = 1; -- 报错,不能在普通查询里使用on,需要使用where 2、连接查询会产生一张中间表(临时表),on是在生成中间表时使用的条件;而where是在中间表生成后对中间表进行过滤使用的条件...test1.id = 1; 对于第一个语句,结果是: id name id name 1 A 1 E 2 B null null 3 C null null 对于第二个语句,结果是: |id|name....id = test2.id; -- 报错,没有使用on 4、在内连接和交叉连接中,单独使用on和where对结果集没有区别。...test1.id = test2.id; 附 以上语句都是在MySQL5.0的情况下测试的。

    2K20

    图解sql中的where和on的区别

    经常会有读者有疑问,sql中关联条件是放where后面好,还是on后面好?今天就通过图形的方式给大家来解决这个问题。 之前两章我们通过图解SQL的执行顺序和JOIN的原理知道了这两步的执行过程。...测试样表 我们新建两张测试表Customers和Orders,表结构如下: 表Customers 表Orders 要求:使用SQL查询广州客户的相关信息(客户ID,姓名,地址,城市,邮编,省份,订单ID...) 我们直接写出正确的SQL查询语句: SELECT a....和WHERE都是过滤筛选条件的,那么能不能将WHERE后面的条件 a.城市='广州' 放在 ON条件后面呢?...在理解了LEFT JOIN,RIGHT JOIN和INNER JOIN的原理后,再来看WHERE和ON的区别就比较容易理解了。

    16210

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

    前言使用 SQL 从单个表或者多表联合查询数据时,可以使用 WHERE 子句指定查询条件。当给定查询条件时,只有满足条件的数据才会被返回。建议您使用 WHERE 子句来过滤记录,以获取必要的结果集。...WHERE 子句不仅可以用在 SELECT 语句中,还可以用在 UPDATE、DELETE 等语句中,我们将在后续进行介绍。...语法WHERE 子句用于 SELECT 语句时的基本语法如下:SELECT column1, column2, columnNFROM table_nameWHERE condition注:可以在 condition...,并且返回name,age两个字段,代码如下:SELECT name, ageFROM playerWHERE age > 30;该语句将得到如下的结果:+--------+-----+|name...中WHERE子句的使用,后续我们将继续介绍SQL的使用。

    98120

    sql中的 where 、group by 和 having 用法解析

    --sql中的 where 、group by 和 having 用法解析 --如果要用到group by 一般用到的就是“每这个字” 例如说明现在有一个这样的表:每个部门有多少人 就要用到分组的技术...1、显示90分以上学生的课程名和成绩 //这是一个简单的查询,并没有使用分组查询 SQL> select sno,pno,grade from sc where grade...1、显示90分以上学生的课程名和成绩 //这是一个简单的查询,并没有使用分组查询 SQL> select sno,pno,grade from sc where grade>=90;...1、显示90分以上学生的课程名和成绩 //这是一个简单的查询,并没有使用分组查询 SQL> select sno,pno,grade from sc where grade...1、显示90分以上学生的课程名和成绩 //这是一个简单的查询,并没有使用分组查询 SQL> select sno,pno,grade from sc where grade>=90;

    12.9K30

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

    最近遇到相关业务,想揪一下sql的中的left join 或者right join 或者inner join 中的 on和where的区别,想了解这个首先我们要了解两个基础的知识。...1.join的三种连接方式的区别: left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录...笛卡尔积:两个[集合]*X*和*Y*的笛卡尓积(Cartesian product),又称[直积],表示为*X* × *Y*,第一个对象是*X*的成员而第二个对象是*Y*的所有可能[有序对]的其中一个成员...有了上面的两个知识之后,我们来看一下实例 先准备两张需要使用的表 mysql> select * from user; +----+--------+ | id | name | +----+--...where 是没有区别的 下面我们来执行sql语句看看 left join select a.

    3.8K10

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

    背景 SQL中JOIN子句是用于把来自两个或多个表的数据连接起来,在这个过程中可能会添加一些过滤条件。昨天有小伙伴问,如下图的这两种SQL写法查询结果是否会一样?(好像这是某一年阿里的面试题) ?...案例 1、创建测试数据库和表并且插入用户测试的数据。...结果验证 将上面的两个表Inner Join和Left Join,过滤条件分别放在on和where中。...结论:Inner Join时过滤条件放在on和where中返回结果一致。...结论:Left Join时过滤条件放在on和where中返回结果不一致。 原因分析 可以这么理解,当两张表在Left Join时,会生成一张连接临时表,然后再将这张连接临时表返回给用户。

    3.5K10

    mysql语句和sql语句的区别_mongodb和mysql的区别

    大家好,又见面了,我是你们的朋友全栈君。 MySQL和SQL之间的区别有哪些?很多PHP的初学者,对MySQL,MyAdmin和SQL有什么区别并不是很清楚?...SQL由ISO(国际标准化组织)标准化,和其他数据库中几乎是相同的方式运行,SQL大致分为三种语言。它在控制和操作数据库时使用,它是一种在所有语句中组合动词和对象的语法。...SQL Server和MySQL的支持SQL 它是关系数据库的标准编程语言,但每个都使用自己的扩展。确定关系数据库管理系统的另一个重要考虑因素是标准合规性。...三:MySQL和SQL之间的区别 两者最大的区别就是MySQL是开源,但是两者都是关系型数据库,目前有很多人使用这两种数据库,具体请看以下图: 结论: SQL是一种用于操作数据库的语言 MySQL是市场上第一个可用的开源数据库之一...SQL用于访问,更新和操作数据库中的数据 MySQL是一种RDBMS,它允许保持数据库中存在的数据 SQL是结构化查询语言 MySQL是一个使用MYSQL存储,检索,修改和管理数据库的RDBMS SQL

    3.4K20

    神奇的 SQL 之扑朔迷离 → ON 和 WHERE,好多细节!

    认为 ON 和 WHERE 的生效时机有待商榷;此时楼主开始了欠大家的账 神奇的 SQL 之 联表细节 → MySQL JOIN 的执行过程(二)中对联表算法进行了补充,详细介绍了 MRR 和 BKA...,但还是未介绍 ON 和 WHERE,楼主依旧欠着大家的账,内心涌满了愧疚   咳咳,闲话不多说,进入我们今天的正题 SQL 执行顺序   SQL 的执行顺序相信大家多少有所了解,上网一搜也很快就能找到答案...一定是与 join 一并使用的,join 会添加外部行,并将外部行中被驱动表的字段填充 null ,而 where 进行过滤的时候,只有逻辑判断为 true 的记录才会保留,逻辑值为 false 和...    语句 query_where 返回的是 8 行。...神奇的 SQL 之 ICP → 索引条件下推     对相关概念不了解的可以去对应的博客查阅   2、ON 和 WHERE     两者好区分,也容易混淆,他们在概念上就做了明确区分,但是又可以做概念之外的事

    92320

    mysql语句和sql语句的区别_oracle和sqlserver的语法区别

    sql和mysql语法的区别有:mysql支持enum和set类型,sql不支持,mysql需要为表指定存储类型,mysqlL中text字段类型不允许有默认值,sql允许有等等方面都存在差异 MySQL...与SQLServer的语法区别 1、MySQL支持enum,和set类型,SQL Server不支持 2、MySQL不支持nchar,nvarchar,ntext类型 3、MySQL的递增语句是AUTO_INCREMENT...,而MS SQL是identity(1,1) 4、MS SQL默认到处表创建语句的默认值表示是((0)),而在MySQL里面是不允许带两括号的 5、MySQL需要为表指定存储类型 6、MS SQL识别符是...EXISTS cdb_forums; 14、MySQL支持无符号型的整数,那么比不支持无符号型的MS SQL就能多出一倍的最大数 存储 15、MySQL不支持在MS SQL里面使用非常方便的varchar...21、同样的负载压力,MySQL要消耗更少的CPU和内存,MS SQL的确是很耗资源。

    1.7K10
    领券