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

SQL语句中 where 和 on 区别

先说结论: 在使用left join左连接时,on and和on where条件区别如下: 1、on条件是在生成临时表时使用条件,它不管on中条件是否为真,都会返回左边表中记录。...2、where条件是在临时表生成好后,再对临时表进行过滤条件。...这时已经没有left join含义(必须返回左边表记录)了,条件不为真的就全部过滤掉,on后条件用来生成左右表关联临时表,where条件对临时表中记录进行过滤。...join过程可以这样理解:首先两个表做一个笛卡尔积,on后面的条件是对这个笛卡尔积做一个过滤形成一张临时表,如果没有where就直接返回结果,如果有where就对上一步临时表再进行过滤。...where过滤作用就出来了,右连接原理是一样。到这里就真相大白了:inner join中on和where没区别,右连接和左连接就不一样了。 本文转载自: SQL语句中where和 on区别?

3K20

sql语句中where与having区别

Where 是一个约束声明,使用Where约束来自数据库数据,Where是在结果返回之前起作用Where中不能使用聚合函数。...在查询过程中聚合语句(sum,min,max,avg,count)要比having子句优先执行。而where子句在查询过程中执行优先级高于聚合语句。 下面用一个例子进一步说明问题。...则 sql 语句应为: select deparment, avg(salary) as average from salary_info group by deparment having...一来,我们要使用聚合语句 avg ;二来,我们要对聚合后结果进行筛选( average > 3000 ),因此使用 where 会被告知 sql 有误。...例2:要查询每个部门工资大于3000员工个数 sql语句应为: select deparment, count(*) as c from salary_info where salary >

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

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.6K51

SQL语句中 left join 后用 on 还是 where,区别大了!

前天写SQL时本想通过 A left B join on and 后面的条件来使查出两条记录变成一条,奈何发现还是有两条。...在使用left join时,on 和 where 条件区别如下: on条件是在生成临时表时使用条件,它不管on中条件是否为真,都会返回左边表中记录。...where条件是在临时表生成好后,再对临时表进行过滤条件。这时已经没有left join含义(必须返回左边表记录)了,条件不为真的就全部过滤掉。...where 条件: tab2.name=’AAA’ 第二条SQL过程: 1、中间表on条件: tab1.size = tab2.size and tab2.name=’AAA’ (条件不为真也会返回左表中记录...而inner jion没这个特殊性,则条件放在on中和where中,返回结果集是相同

42620

SQL语句中 left join 后用 on 还是 where,区别大了!

前天写SQL时本想通过 A left B join on and 后面的条件来使查出两条记录变成一条,奈何发现还是有两条。...在使用left join时,on 和 where 条件区别如下: on条件是在生成临时表时使用条件,它不管on中条件是否为真,都会返回左边表中记录。...where条件是在临时表生成好后,再对临时表进行过滤条件。这时已经没有left join含义(必须返回左边表记录)了,条件不为真的就全部过滤掉。...第二条SQL过程: 1、中间表on条件: tab1.size = tab2.size and tab2.name=’AAA’ (条件不为真也会返回左表中记录) ?...而inner jion没这个特殊性,则条件放在on中和where中,返回结果集是相同

1.1K10

SQL 语句中 where 条件后 写上1=1 是什么意思

这段代码应该是由程序(例如Java)中生成where条件中 1=1 之后条件是通过 if 块动态变化。...例如: 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"; } where 1=1 是为了避免where 关键字后面的第一个词直接就是 “and”而导致语法错误...动态SQL中连接AND条件 where 1=1 是为了避免where 关键字后面的第一个词直接就是 “and”而导致语法错误。 where后面总要有语句,加上了1=1后就可以保证语法不会出错!...select * from table where 1=1 因为table中根本就没有名称为1字段,所以该SQL等效于select * from table, 这个SQL语句很明显是全表扫描,需要大量

3.4K30

SQL 语句中 where 条件后 写上 1=1 是什么意思

这段代码应该是由程序(例如Java)中生成where条件中 1=1 之后条件是通过 if 块动态变化。...例如: 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"; } where 1=1 是为了避免where 关键字后面的第一个词直接就是 “and”而导致语法错误...动态SQL中连接AND条件 where 1=1 是为了避免where 关键字后面的第一个词直接就是 “and”而导致语法错误。 where后面总要有语句,加上了1=1后就可以保证语法不会出错!...select * from table where 1=1 因为table中根本就没有名称为1字段,所以该SQL等效于select * from table, 这个SQL语句很明显是全表扫描,需要大量

94630

SQL 语句中 where 条件后为什么写上1=1 , 是什么意思?

SQL145题系列 程序员在编程过程中,经常会在代码中使用到where 1=1,这是为什么呢? SQL注入 初次看到这种写法同学肯定很纳闷,加不加where 1=1,查询不都一样吗?...例如,当我们要删除客户名称为“张三”记录,我们可以这样写: delete from customers where name='张三' 这个时候如果在where语句后面加上 or 1=1会是什么后果...有人说我直接把where写在if语句里面,我就不写where 1=1。...2) { sql=sql+" where var3=value3"; } 当condition 1为真,condition 2为假时,上面被执行SQL代码为: select * from table_name...那么SQL语句就变成了这样: select * from table_name where var2=value2 where var3=value3; 很明显这是不符合SQL语法规范

16110

为什么SQL语句Where 1=1 and在SQL Server中不影响性能

对出现在where句中字段加索引 避免在索引列上使用函数或计算,在where句中,如果索引是函数一部分,优化器将不再使用索引而使用全表扫描 在insert和update维表时都加上一个条件来过滤维表中已经存在记录...举个例子,平常有人对你说你有点肾虚,我想你第一反应肯定是想办法捍卫男人尊严了,但如果你去医院检查医生这么说,那你可能就会一脸虔诚求教如何补了:-),那举上述摘录语句例子:1)少用查询,如果在SQL...Server操作XMLXPATH按节点属性筛选时候,那转换成查询一定会更快 2)如果使用了IN或者OR等时发现查询没有走索引,使用显式申明指定索引,这种情况查询分析器不走索引一定会有其原因,...而在SQL Server领域,T-SQL语句到查询结果返回需要经历一个完整周期,如图1:     图1.T-SQL生命周期     因此,在关系数据库领域,SQL语句写法只是一个抽象逻辑,而不是像编程语言那样直接实现...比如语句select * from table where a=1 and b=2 这个语句SQL Server估计行数会是:     a列选择率*b列选择率*表中采样总行数     因此,当

2K30

谈谈在SQL语句中优化技巧

在 php 开发中,代码写来写去功能无非连接数据库,进行增删改查,在日常开发中如何优化我们所写 sql 语句呢? 1、应尽量避免在 where句中使用!...id from t where num between 1 and 3 7、如果在 where句中使用参数,也会导致全表扫描。...id from t where createdate>=’2005-11-30′ and createdate<’2005-12-1′  10、不要在 where句中“=”左边进行函数、算术运算或其他表达式运算...)  用下面的语句替换: select num from a where exists(select 1 from b where num=a.num)  14、并不是所有索引对查询都有效,SQL 是根据表中数据来进行查询优化...沈唁志|一个PHPer成长之路! 原创文章采用CC BY-NC-SA 4.0协议进行许可,转载请注明:转载自:谈谈在SQL语句中优化技巧

74740

SQL语句中existsnot exists用法分析

外层查询一条 -》 判断查询是否有返回 -》 有返回则为true -》 外层该条记录可显示 -》 继续外层遍历下一条 exists 和in 区别 这二者最大区别,是使用...in只能返回一个字段值 not exists sql 不返回结果集为真 例子 1、Student: Sno Sname Ssex Sage Sdept 200215121 李勇...解法1:利用exists 首先取Student表中一个元组,然后在SC表中依次找SC.Sno=该元组Sno,并且对应Cno='1',如果存在,则外层查询where子句返回为真,则Student表中该元组可以输出...查找过程: 首先,选取Student表中一个元组,然后在依次判断Course表中每个元组是否可以输出,只要有一个课程可以输出,则最外层查询where子句返回为false;而在判断某个课程是否可以输出时...,则要利用第三层查询,利用当前学号和当前课程号,在SC表中查询,如果存在,则第二层查询where子句返回false。

3K30

delphi去掉字段前后引号_Delphi编程SQL语句中引号(‘)、quotedstr()、(”)、format()在SQL语句中用法…

Delphi编程SQL语句中引号(‘)、quotedstr()、(”)、format()在SQL语句中用法 (2011-06-23 12:14:13) 标签: delphi编程 sql语句引号...quotedstr 总结一下SQL语句中引号(‘)、quotedstr()、(”)、format()在SQL语句中用法以 及SQL语句中日期格式表示(#)、(”) 在Delphi中进行字符变量连接相加时单引号用...2,Delphi语句中日期表示 对于access数据库: adoquery1.sql.text:= ‘select 字符型编号 from YourTable where 日期型字段=#2003-12-...from YourTable where 日期型字段=’2003-12-01′ 日期字段还可以这样表示 Delphi语句 adoquery1.sql.text:= ‘select 字符型编号 from...如发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

1.1K110

SQL Server常用Sql语句

语句 方法1:   Select 字段列表 from 表名列表 where 查询条件        设置字段别名: 列表达式 as 别名 或 列名=列表达式 查询经过计算值: 计算字段名=表达式...25.条件查询语句 Select 字段列表 Into 新表名 from 表名列表  where 查询条件 注释:新表是不存在,新表列和行是基于查询结果, ---使用该语句必须在目的数据据中必须具...Where 列名 =’值’ order by 给定条件列 [asc/desc] 注释:asc:升序    desc:降序 28.集合函数(对查询结果得到数据集进行汇总或求平均值等各种运算) SQL server...统计函数表 函数名 功能 SUM() 求和 AVG() 求平均值 MIN() 返回一个数列或数值表达式最小值 MAX() 返回一个数列或数值表达式最大值 COUNT() 返回满足SELECT语句中指定条件记录个数...on 表名1.列=表名2.列 34.自连接(暂无整编) 35.合并查询(暂无整编) 36.查询(暂无整编) 整理制作本手册主要目的在于为广大软件爱好初学者提供方便,如若发现本文有错误编辑,请联系狂码一生站长进行错误纠正

5.2K44

如何自动填充SQL语句中公共字段

如何自动填充SQL语句中公共字段 1. 前言 我们在设计数据库时候一定会带上新增、更新时间、操作者等审计信息。...之所以带这些信息是因为假如有一天公司数据库被人为删了,尽管可能有数据库备份可以恢复数据。但是我们仍然需要追踪到这个事是谁干,在什么时间干,具体干了哪些事等等,方便定责和修补。...总结 今天我们SQL审计中一些公共字段自动填充常用方案进行了一些介绍,特别对 Mybatis Plus 提供功能进行了介绍相信能够帮助你简化一些样板代码编写。...但是SQL审计并不仅仅这么简单,根据你业务不同会有不同设计。...如果设计更加精细化的话,会通过镜像或探针方式采集所有数据库访问流量,并基于SQL语法、语义解析技术,记录下数据库所有访问和操作行为。

2.2K30
领券