首页
学习
活动
专区
工具
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 1=1意义

我们在看别人项目的时候,很多时候看到这样SQL语句: select * from user where 1=1 其中这个where1=1是有特殊意义,包含以下两种情境:动态SQL拼接和查询表结构。...当我们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,只是为了满足多条件查询页面中不确定各种因素而采用一种构造一条正确能运行动态...二 查询表结构 优点:数据库开销小。 where 1=1是sql语句条件逻辑判断表达式,由于1=1成立,恒为真,该表达式1=1将始终返回"真"。...,有些画蛇添足,where 1=1实际意义不如where 11(或者where 1=0)来得有用,当我们只需要获取表字段(结构)信息,而不需要理会实际保存记录时,例2)写法将是非常可去取

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

sql句中where与having区别

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

1.5K20

sql嵌套查询_sql查询嵌套优化

大家好,又见面了,我是你们朋友全栈君。 最近在做各类小应用,用到了MYSQL,有时候会用到一些比较复杂嵌套查询,在研究怎么通过SQL实现这些。...score 1 math 78 2 math 83 3 physics 90 … … … 现在想查询七年级学生数学成绩,那么sql语句应该这么写: select * from stu left...从性能上说,先过滤也有利于后续join过程。当然,数据库对这些肯定有相应优化。我们还是回归到一个基本问题, 两个子查询怎么样进行join呢?...") t on s.id = t.stu_id; 注意在上面的例子当中,两个子查询写法,查询语句括起来,紧跟一个表临时命名。...事实上,sql功能强大,可以实现许多复杂业务查询。在实际场景,其实很容易遇到这样情形。

5.2K10

SQL语句规范参考

SQL语句包含多表连接时,必须加上表别名,对每个字段使用都要带上表别名。...例如在where句中numeric型和int型比较。 8. 在查询中前后必须加上括号。...查询时应尽量减少多余数据读取,通过使用where子句来减少返回记录数。 2. 如果在语句中有not in(in)操作,应尽量用not exists(exists)来代替。...特别对大数据量两者检索速度有很明显区别。 3. 不宜使用外连接。外连接效率低。 4. 一条SQL句中不宜使用3层以上嵌套查询。如果超过,则应在Java等应用服务器程序中处理。 5....因为这些对列操作会将导致表扫描,影响性能。 9. 在where句中,如果有多个过滤条件,应将索引列或过滤记录数最多条件放在前面。 10. 能用连接方式实现功能,不得用查询

1.2K20

sql连接查询

本文链接:https://blog.csdn.net/luo4105/article/details/51397825 一直没有注重于sql这一块,现在项目有大量统计,报表,以前都是多表连接或者用...mybatis延迟加载之类,这几天心血来潮自己查了一下,发现了sql查询这个好东西,感觉方便多了,速度也快多了(自我感觉)。...sql查询是可以在把数据查出来后在查出一条其他表关联数据一项(多项或者多条都会报错), 比如我们要查询用户表(user)并加上一个列(rolename)表示它代表权限名字,那么我们可以这么写...: select *,(select rolename form role where roleId=<span style="font-family: Arial, Helvetica, sans-serif...是常量,对于后台就是变量了) 比如在我们上个例子中加上一列列名为"nowTime"列,里面是当前时间,那么我们可以这么做 select *,(select rolename form role where

3.3K20

SQL句中嵌套子查询「建议收藏」

大家好,又见面了,我是你们朋友全栈君。 文章目录 相关子查询 自身连接 一开始在学习SQL语句时候,没有感受到嵌套子查询厉害,尤其是相关子查询。...现在,给出SQL语句: select Sno,Cno from tb_SC x where Grade >( select AVG(Grade) from tb_SC y where x.Sno=y.sno...tb_SC where Grade >( select AVG(y.Grade) from tb_SC x,tb_SC y where x.Sno=y.sno ) 我当时就觉得,为什么一定要使用相关子查询呢...不使用相关子查询也没有问题啊。但是事实告诉我是有问题。上面的SQL语句计显示出来结果并不是真正结果。...给出SQL语句: select Sno,Sname from tb_Student where not exists ( select * from tb_Course where not exists

1.4K10

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

sql查询这个东西, 要说它简单, 可以很简单, 通常情况下只需使用增删查改配合编程语言逻辑表达能力,就能实现所有功能。 但是增删查改并不能代表sql语句所有, 完整sql功能会另人望而生畏。...在连接查询语法中,另人迷惑首当其冲就要属on筛选和where筛选区别了, 在我们编写查询时候, 筛选条件放置不管是在on后面还是where后面, 查出来结果总是一样, 既然如此,那为什么还要多此一举让...sql查询支持两种筛选器呢?...sql连接查询分为3种, cross join,inner join,和outer join , 在 cross join和inner join中,筛选条件放在on后面还是where后面是没区别的...第四步,应用where筛选器 在这条问题sql中,因为没有where筛选器,所以上一步结果就是最终结果了。

3.2K80

SQL 查询条件放到 JOIN 子句与 WHERE 子句差别

我们再写 SQL 时候,最常碰到一个问题就是,把查询条件放到 JOIN 子句和放到 WHERE 子句有什么不同呢?...'publish' ORDER BY sku.price DESC, wp_posts.post_date DESC LIMIT 0, 10 查询条件放到 WHERE 语句: SELECT SQL_CALC_FOUND_ROWS...INNER JOIN,这两种查询结果相同。...但是语义上:JOIN - 描述两个表之间关系,WHERE - 从结果集中删除行。这两种方法直接存在显著语义上差别,尽管两种方法对结果和性能都无影响,但是选择正确语法将有助于代码更易于被阅读。...OUTER JOIN:如果使用是 OUTER JOIN,可能会不同,比如上面的 SQL 改成 LEFT JOIN,并且连接条件失败,则查询条件放到 JOIN 子句仍将获得一行,但是如果放到 WHERE

2.3K20

SQL Cookbook》 - 第一章 检索数据

在SELECT语句中指定具体列名,可以确保查询语句不会返回无关数据。当在整个网络范围内检索数据时,这样做更重要,因为他避免了将时间浪费在检索不需要数据上。 2....WHERE子句比SELECT子句率先执行,当WHERE子句执行时,salary和commission尚不存在,直到WHERE子句执行了,这些别名列才会生效, select sal as salary,... comm as commission   from emp  where salary < 5000; 然而,FROM子句会先于WHERE子句执行,如果将最初查询放入一个FROM子句,查询结果就可以在最外层...WHERE子句开始前产生,最外层WHERE子句就可以“看到”别名列了, select * from ( select sal as salary, comm as commission from...可以为CASE表达式执行结果取一个别名,让结果集更有可读性。

84020

SQL 查询怎么优化?写很深!

---- 查询 (Subquery)优化一直以来都是 SQL 查询优化中难点之一。关联查询基本执行方式类似于 Nested-Loop,但是这种执行方式效率常常低到难以忍受。...查询简介 查询是定义在 SQL 标准中一种语法,它可以出现在 SQL 几乎任何地方,包括 SELECT, FROM, WHERE 等子句中。...WHERE o_custkey = c_custkey ) ▲ Query 1: 一个出现在 WHERE句中标量子查询,关联参数用红色字体标明了 SELECT o_orderkey,...2: 一个出现在 SELECT 子句中标量子查询 存在性检测(Existential Test) 查询:特指 EXISTS 查询,返回一个布尔值。...虽然理论上任意查询都可以处理,但是实际上,没有任何一个已知 DBMS 实现了所有这些变换规则。 ► HyPer 和 SQL Server 做法有什么异同?

3.4K30

如何写优雅SQL原生语句?

sql各语句执行顺序概览与讲解 项目实战中一段sql说明讲解 sql句中别名使用 书写sql语句注意事项 前言 上一篇讲Mysql基本架构时,以“sql查询语句在MySql架构中具体是怎么执行...知道了sql查询语句在MySql架构中具体执行流程,但是为了能够更好更快写出sql语句,我觉得非常有必要知道sql句中各子句执行顺序。...现在开始我们学习 语句中各子句完整执行顺序概括(按照顺序号执行) from (注:这里也包括from中语句) join on where group by(开始使用select中别名,后面的语句中都可以使用...sql句中别名 别名在哪些情况使用 在 SQL句中,可以为表名称及字段(列)名称指定别名 表名称指定别名 同时查询两张表数据时候: 未设置别名前: SELECT article.title,...(级联)删除尤为有用 delete t1,t2 from t_a t1 , t_b t2 where t1.id = t2.id 查询结果需要使用别名 查看上面一段sql 别名使用注意事项 虽然定义字段别名

1.8K20

SQL Cookbook》 - 第三章 多表查询

如果习惯在FROM子句中,而不是WHERE句中,写连接逻辑,则可以使用JOIN子句。 如果从可阅读性角度来说,表关联时候,关联条件写在ON子句中,过滤条件写在WHERE句中,会更让人理解。...为了避免NOT IN和NULL值带来问题,可以结合使用NOT EXISTS和关联查询。关联查询指的是外层查询执行结果集会被内层查询引用。...EXISTS/NOT EXISTS和关联查询一起使用时,SELECT中列,不重要,之所以使用了NULL,是为了让注意力集中在查询连接操作上,而不是SELECT列上。 5. ...新增连接查询而不影响其他连接查询 如果是DB2、MySQL、PG以及SQL Server、Oracle 9i以上,可使用, select e.ename, d.loc, eb.received   from...识别并消除笛卡尔积 为了消除笛卡尔积,通常用到n-1法则,其中n代表FROM子句中表个数,n-1则代表了消除笛卡尔积所必需链接查询最少次数。

2.3K50

基础篇:数据库 SQL 入门教程

SQL 指结构化查询语言 SQL 使我们有能力访问数据库 SQL 是一种 ANSI 标准计算机语言 SQL 可与数据库程序协同工作,比如 MS Access、DB2、Informix、MS SQL...最常见数据库类型是关系型数据库管理系统(RDBMS): RDBMS 是 SQL 基础,同样也是所有现代数据库系统基础,比如 MS SQL Server, IBM DB2, Oracle, MySQL...AND & OR – 运算符 AND 和 OR 可在 WHERE 句中把两个或多个条件结合起来。 如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。...SQL 高级言语学习 LIKE – 查找类似值 LIKE 操作符用于在 WHERE句中搜索列中指定模式。...所以,请检查你数据库是如何处理 BETWEEN…AND 操作符! AS – 别名 通过使用 SQL,可以为列名称和表名称指定别名(Alias),别名使查询程序更易阅读和书写。

8.9K10

两万字图文 SQL 零基础入门,不怕你学不会,就怕你不收藏!❤️

SQL 指结构化查询语言 SQL 使我们有能力访问数据库 SQL 是一种 ANSI 标准计算机语言 SQL 可与数据库程序协同工作,比如 MS Access、DB2、Informix、MS SQL...最常见数据库类型是关系型数据库管理系统(RDBMS): RDBMS 是 SQL 基础,同样也是所有现代数据库系统基础,比如 MS SQL Server, IBM DB2, Oracle, MySQL...AND & OR – 运算符 AND 和 OR 可在 WHERE 句中把两个或多个条件结合起来。 如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。...SQL 高级言语学习 ???? LIKE – 查找类似值 LIKE 操作符用于在 WHERE句中搜索列中指定模式。...所以,请检查你数据库是如何处理 BETWEEN…AND 操作符! ???? AS – 别名 通过使用 SQL,可以为列名称和表名称指定别名(Alias),别名使查询程序更易阅读和书写。

8.3K10
领券