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

SQL语句中 where 和 on 区别

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

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

SQL语句中where 1=1意义

我们在看别人项目的时候,很多时候看到这样SQL语句: select * from user where 1=1 其中这个where1=1是有特殊意义,包含以下两种情境:动态SQL拼接和查询表结构。...var3=value3"; } 在这个例子,当两个if 都不成立时候,或者仅有第一个if 成立时候,SQL语句拼接就会出现错误。...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将始终返回"真"。...下面例子将有助于理解有关概念: 1) select * from t1 where 1=1; -- 实际等效于select * from t1 where true;-- 语句将返回t1所有的记录行

3.6K51

sql语句中where与having区别

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

1.5K20

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

大家好,又见面了,我是你们朋友全栈君。 文章目录 相关子查询 自身连接 一开始在学习SQL语句时候,没有感受到嵌套子查询厉害,尤其是相关子查询。...现在,给出SQL语句: select Sno,Cno from tb_SC x where Grade >( select AVG(Grade) from tb_SC y where x.Sno=y.sno...然后用这条数据和内层查询y(tb_SC)表每一条数据做比较,如果满足x.Sno=y.Sno,就抽出来到tmp表中去(这个tmp表是我自己想出来,并于理解)。...不使用相关子查询也没有问题啊。但是事实告诉我是有问题。上面的SQL语句计显示出来结果并不是真正结果。...所以,我就发现了一个规律:什么时候使用相关子查询: 如果你想要使用一个表数据逐个和另一个表数据比较,这个时候可以使用相关子查询。就相当于二重for循环。

1.4K10

避免锁表:为Update语句中Where条件添加索引字段

最近在灰度环境遇到一个问题:某项业务在创建数据时耗时异常长,但同样代码在预发环境并未出现此问题。起初我们以为是调用第三方接口导致性能问题,但通过日志分析发现第三方接口响应时间正常。...深入分析后,问题核心暴露出来:另一业务流程对工单表执行更新(UPDATE)操作SQL,其where句中涉及字段缺少必要索引,导致其他业务在操作表数据时需要等待该更新完成。...,当我们索引失效时,也会锁表 命令行查看(mysql版本8.0) 查看被锁定表 show OPEN TABLES where In_use > 0; 此命令用于列出当前正在使用表,也就是说那些被锁定或正在进行某些操作...; 总结 在编写Update语句时,务必注意Where条件涉及字段是否有索引支持。...避免全表锁关键在于优化查询,利用索引提高查询效率,减少系统性能影响。通过合理地设计索引,并确保Update语句中Where条件包含索引字段,可以有效地提升数据库性能和并发能力。

11410

MySQL查询语句中IN 和Exists 对比分析

背景介绍 最近在写SQL语句时,对选择IN 还是Exists 犹豫不决,于是把两种方法SQL都写出来对比一下执行效率,发现IN查询效率比Exists高了很多,于是想当然认为IN效率比Exists...tabA.x in (select x from tabB where y>0 ); 其执行计划: (1)执行tabB表查询,得到结果集B,可以使用到tabB表索引y; (2)执行tabA表查询...包含INSQL语句: select from t_author ta where author_id in (select author_id from t_poetry tp where tp.poetry_id...>3650 ); 包含ExistsSQL语句: select from t_author ta where exists (select * from t_poetry tp where tp.poetry_id...原因分析 对t_poetry表查询结果集很小,且两者在t_poetry表都能使用索引,对t_poetry查询消耗基本一致。

1K10

由于查询语句中日期格式引起问题

我这边有一个系统,在一个环境下运行完全正常,但迁到另外一个环境后,其中一个查询功能就莫名其妙出现了问题,我通过检查,发现有一个很复杂查询语句,在一个数据库环境下查询完全正常,在另外一个环境下查询就出问题了...我首先就怀疑是数据库环境问题,但检查发现,两边数据库环境都是oracle817。其次我又怀疑是由于数据库数据引起问题,后来检查发现数据没有问题。...这样我就开始对这个复杂查询语句进行一句一句检查,最后终于发现,语句查询条件中日期比较一边使用了日期格式,一边使用了字符串格式,下面给个简单例子: select * from tab a where...a.testDate > ‘2005-11-27’; 上面语句中,我假定了表tabtestDate字段是Date格式,像上面这样已经语句,在有些环境下可能不会出错,有些环境就会出错了,因为在oracle...,数据库会将字段testDate值自动先转换成字符串,然后再跟右边字符串进行比较。

85610

浅谈pymysql查询语句中带有in时传递参数问题

直接给出例子说明: cs = conn.cursor() img_ids = [1,2,3] sql = "select img_url from img_url_table where id in %...s" cs.execute(sql, (img_ids, )) # 直接传递元组包裹列表即可 补充知识:Python将多行数据处理成SQL语句中where条件in(‘ ‘,’ ‘,’ ‘)数据 在工作中有时需要查询上万行指定数据...,就会用到SQL语句中 select * from table1 where table1.name in (‘ ‘ , ‘ ‘ ) 条件查询,所以自己写了个小小Python脚本来处理这多行数据,废话不多说...不足:处理后数据应去掉最后一个逗号,这样才是最完整SQL语句符合where in()条件数据。...以上这篇浅谈pymysql查询语句中带有in时传递参数问题就是小编分享给大家全部内容了,希望能给大家一个参考。

4.8K10

HIVE基础命令Sqoop导入导出插入表问题动态分区表创建HIVE表脚本筛选CSV非文件行GROUP BYSqoop导出到MySQL字段类型问题WHERE查询CASE查询

// 导入HDFS文件数据到Hive表 load data inpath '/hdfs/app/data/test.txt' into table invoice_lines; // 从别的表查询出相应数据并导入到...temp.jobid = '106'; // 在创建表时候通过从别的表查询出相应记录并插入到所创建 create table invoice_temp1 AS select xx1,xx2...WHERE查询 在hive查询会有各种问题,这里解决方法是将查询改成JOIN方式 先看一段在MySQLSQL,下不管这段SQL从哪来,我也不知道从哪里来 SELECT...CASE查询 这个与上面是一样,都是改成JOIN方式。...在MySQLSQL如下: CASE WHEN sour_t.REL_VENDOR_ID IS NOT NULL AND sour_t.VENDOR_ID IS NULL

15.2K20

MVC查询语句

查询语句 开发工具与关键技术:MVC 作者:盘洪源 撰写时间:2019年3月30日星期六 查询在MVC做项目必不可少,数据新增、修改、删除都离不开查询。...在做项目的时候你要把一个表数据显示在页面上,这时候你就需要在控制器写一个单表查询方法将数据库里数据查询出来,然后再通过异步提交把数据提交到页面上。 ?...这就是一个最简单单表查询,从数据库中将SYS_NoticeTypeTable数据查询出来,其实这个查询语句和数据库里查询差不了多少,就是“from”,“in”,“select”这三个关键字,from...什么时候需要用到多表查询呢?就是你需要显示在页面上数据字段在一个表无法找全,这个时候你就需要用到多表查询。 看下图 ?...还有查询还可以通过添加Where条件进行刷选数据,用法很简单,如下图 ? 这个就是通过学生ID来查询出学生照片一个简单单表查询,很简单,在查询语句中加上一个Where条件。

1.9K10

数据库查询语句_数据库select from where

gbk ; 5、改动完成,才能在dos窗口中临时插入数据可以支持中文; 6、这些修该都是临时修改,下次使用时候还需重新设置 二、数据库一些查询语句 1.最基本查询:select...20-30 岁之间 -- 1.mysql中支持java&&,但在MySQL我们不建议使用,我们使用 and SELECT * FROM student3 WHERE age>= 20...20-30 岁之间 SELECT * FROM student3 WHERE age BETWEEN 20 AND 30; -- mysql中支持java||,但在MySQL我们不建议使用,我们使用...student3 WHERE age=18 OR age=20 OR age=45 -- 当有多个或关系时候,可以使用in 集合语句----where 字段名称 in(值1,值2,值3);...LIKE '%马%'; -- 查看包含两个字符学生 SELECT NAME,id,age, address FROM student3 WHERE NAME LIKE '__'; -- 查询姓名第二字是化所有信息

1.4K10

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

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

2K10

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

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

3.2K80

shell脚本case条件语句介绍和使用案例

#前言:这篇我们接着写shell另外一个条件语句case,上篇讲解了if条件语句。...case条件语句我们常用于实现系统服务启动脚本等场景,case条件语句也相当于if条件语句多分支结构,多个选择,case看起来更规范和易读 #case条件语句语法格式 case "变量" in...,然后使用case条件语句进行判断,根据用户输入值执行相关操作,给用户输入水果添加颜色 #扩展:输出菜单另外种方式 cat<<-EOF =============================...实践3.开发nginx启动脚本 #主要思路: #1.主要通过判断nginxpid文件有无存在,通过返回值查看有没有运行 #2.通过case语句获取参数进行判断 #3.引入系统函数库functions...、比较,应用比较广,case条件语句主要是写服务启动脚本,各有各优势。

5.7K31

mysqlselect查(selectselect查询)询探索

执行过程如下: 1. 从emp表查询员工编号为1员工记录。 2. 对于查询结果每一条记录,都会执行一个查询查询该员工所在部门名称。...实际上,第一条SQL语句执行顺序是这样: 执行查询查询出员工所在部门名称。这个子查询使用了dept表,通过员工表和部门表deptno字段关联,查询出员工所在部门名称。...在执行查询时候,查询e.deptno是来自于主查询emp表,是通过where条件过滤出来,所以查询e.deptno是一个固定值。...查询结果会作为一个临时表,与主查询emp表进行连接查询,最终得到员工姓名和部门名称查询结果。...总的来说,第一条SQL语句使用了查询,虽然可以实现查询员工姓名和部门名称功能,但是效率不高,不够优化。而第二条SQL语句使用了JOIN操作,可以更好地利用索引,提高查询效率。

3700
领券