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

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

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

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

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

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

3.8K10

SQLJOIN时条件放在Where和On区别

背景 SQLJOIN子句是用于把来自两个或多个表数据连接起来,在这个过程可能会添加一些过滤条件。昨天有小伙伴问,如下图这两种SQL写法查询结果是否会一样?(好像这是某一年阿里面试题) ?...结果验证 将上面的两个表Inner Join和Left Join,过滤条件分别放在on和where。...结论:Inner Join时过滤条件放在on和where返回结果一致。...结论:Left Join时过滤条件放在on和where返回结果不一致。 原因分析 可以这么理解,当两张表在Left Join时,会生成一张连接临时表,然后再将这张连接临时表返回给用户。...在Where情况下,是在临时表生成好以后起作用,在对临时表进行过滤。此时,只要条件不为真的行,全部都过滤掉了。 — 完 —

3.3K10

Studio 3T新功能:支持SQL SELECT DISTINCT,WHERE子句JSON对象及更多

Studio 3T2019年第一个版本侧重于对SQL Query改进,这是您最常用功能之一,此外还有其他用户请求UX优化: 添加了SELECT DISTINCT支持 使用JSON对象WHERE...子句扩展SQL语法 能够在更改字段类型时保留值 更好入门功能建立在功能和新交互之上 SQL查询|支持SQL SELECT DISTINCT 我们已将SQL SELECT DISTINCT添加到支持...SQL语法(长)列表。...SQL查询| WHERE子句JSON对象 除了SELECT DISTINCT之外,您现在还可以通过两种方式在SQL WHERE子句中使用JSON对象: WHERE JSONor WHERE identifier...功能和新交互 我们还添加了功能和新增图库,以便为新用户和当前用户提供更好入职体验。在应用程序检查它!

3.4K20

《SQLSERVER2012之T-SQL教程》T-SQL单表查询(二)「建议收藏」

<(比较运算符); NOT; AND; BETWEEN、IN、LIKE、OR; =(赋值); CASE表达式 CASE表达式是一个标量表达式,返回一个基于条件逻辑值。...需要注意是,CASE是表达式而不是语句,它不允许你控制活动流或是做一些基于条件逻辑操作。不过,它返回值是基于条件逻辑。...T-SQL支持某些函数,可以看作是CASE表达式缩写形式,ISNULL、COALESCE、IIF和CHOOSE。这4和函数只有COALESCE是标准。...遗憾是,SQL Server不支持短路,它基于标准SQL同事操作概念,SQL Server可以按任意顺序自由处理WHERE子句表达式。...例如,CASE表达式WHEN子句计算顺序是有保证,可以按如下方式修改: SELECT col1, col2 FROM dbo.T1 WHERE CASE WHEN col1 = 0

1.7K20

知识点、SQL语句学习及详细总结

系统数据库 在安装好SQL SERVER后,系统会自动安装5个用于维护系统正常运行系统数据库: (1)master:记录了SQL SERVER实例所有系统级消息,包括实例范围元数据(登录帐号)...[abcd]表示匹配abcd其中任何一个,若是连续,可以用 - 表示,[a-d] [^] 不匹配[]任意一个字符。...1.3.1 连接 使用连接时,如果两个表相关字段满足条件,则从两个表中提取数据组成新记录。...连接与外连接区别: 连接:表A与表B进行内连接,则结果为两个表满足条件记录集,即C部分。...CASE函数 CASE函数是一种多分支函数,它可以根据条件列表值返回多个可能结果表达式一个。

1.9K20

T-SQL基础(一)之简单查询

SQL是一种声明式编程语言,即只需表明需要什么而无需关注实现细节(C#LINQ也是如此)。 SQL方言:在SQL标准基础上延伸其它语言,SQL Server中所使用T-SQL。...SQL表达式运算 谓词 SQL谓词是指运算结果为True,False或Unknown逻辑表达式。T-SQL谓词有IN,BETWEEN,LIKE等。...但,很明显第二句WHERE条件逻辑上更清晰。 三值逻辑 SQL中表达式运算结果有三种情况:True,False 与 Unknown。...FROM子句用于指定需要查询数据源,WHERE语句对数据源数据做基于行筛选。通常WHERE子句可以决定查询是否使用索引,及使用哪些索引,对于查询优化有着重要意义。...WHERE子句多个表达式计算并没有确定顺序。 CASE...WHEN... CASE表达式是标量表达式,返回一个符合条件值。注意,CASE是表达式,不是语句,与COUNT类似。

4.1K20

程序员零基础速成SQL

在没有实习练手机会情况下,如何在短时间快速上手SQL对于在校学生或者非技术人员都是相当重要。...成绩表 SQL执行顺序与语法顺序 本篇文章关于SQL语法部分会讲到条件子句where子句)、分组查询(group by子句和having子句)、结果呈现(order by和limit)和连接查询...条件子句——为被查询表增加限制条件 where sid<=6 ##限制只查询学号小于等于6学生成绩 ? 查询结果 2....本部分我们旨在将实务中最常出现详细情况进行说明,从而解决初学者80%sql查询任务。 一、条件子句where) 1....这和excel数据透视表一致。 2. 聚合函数 ? 聚合函数 3. having子句where子句一致,只需注意是对聚合后结果作限制。

1.5K10

高级SQL查询技巧——利用SQL改善和增强你数据

如果我们想在表另一个变量(例如特定存储)上添加任何过滤条件,则可以添加一个简单WHERE语句: select t1.date , sum(t1.widgets_sold) as total_widgets_sold...当您只想满足表特定条件时,可以使用此技术来使用分组功能(即SUM(),COUNT(),MAX())。它只会对满足WHEN子句中包含规则值求和。...将表联接到自身上是一种非常灵活方式,可以向数据集添加汇总列和计算列。 分组功能(例如SUM()和COUNT()与CASE()语句)创造性使用为功能工程,分析报告和各种其他用例带来了巨大机会。...三、使用CASE语句处理复杂逻辑 CASE语句语法与整个数据科学其他常用编程语言逻辑不同(请参阅:Python / R)。...通过使用伪代码对逻辑规则进行周到设计可以帮助避免由于不正确/不一致规则而导致错误。了解如何在SQL编码嵌套逻辑对于释放数据潜力至关重要。

5.7K30

MySQL(二)数据检索和过滤

column from table; 该SQL语句检索结果将返回表所有行,数据没有过滤(过滤将得出结果集一个子集),也没有排序(没有明确排序查询结果,则返回数据顺序没有特殊意义,只要返回相同数目的行...使用between操作符需要两个值:范围开始值和结束值(上面例子X和Y就是开始和结束值)  between匹配范围所有的值,包括指定开始值和结束值 4、空值检查 select column from...column <=Y; and,用在where子句关键字,用来指示检索满足所有给定条件行;即:and指示DBMS只返回满足所有给定条件行(可添加多个过滤条件,每添加一条就要使用一个and) 2、...,可将or操作符所对应子句使用圆括号()括起来,以明确分组相应操作符 圆括号具有较and或or更高计算次序,DBMS首先过滤圆括号条件 PS:任何时候使用具有and和or操作符where子句...column=X和Ycolumn2行(in操作符用来指定匹配值清单关键字,功能和or相当) 圆括号在where子句中还有另一种用法,in操作符用来指定条件范围,范围每个条件都可以进行匹配;in

4K30

经典SQL 语句大全

,在SQL语句组合时用较多 “where 1=1” 是表示选择全部 “where 1=2”全部不选, : if @strWhere !...(三) 使用WHERE子句设置查询条件 WHERE子句设置查询条件,过滤掉不需要数据行。...交叉连接(CROSS JOIN)没有WHERE 子句,它返回连接表中所有数据行笛卡尔积,其结果集合 数据行数等于第一个表符合查询条件数据行数乘以第二个表符合查询条件数据行数。...(三) 使用WHERE子句设置查询条件 WHERE子句设置查询条件,过滤掉不需要数据行。...交叉连接(CROSS JOIN)没有WHERE 子句,它返回连接表中所有数据行笛卡尔积,其结果集合 数据行数等于第一个表符合查询条件数据行数乘以第二个表符合查询条件数据行数。

1.8K10

经典sql server基础语句大全

(三) 使用WHERE子句设置查询条件 WHERE子句设置查询条件,过滤掉不需要数据行。...连接可以在SELECT 语句FROM子句WHERE子句中建立,似是而非在FROM子句中指出连接时有助于 将连接操作与WHERE子句搜索条件区分开来。...交叉连接(CROSS JOIN)没有WHERE 子句,它返回连接表中所有数据行笛卡尔积,其结果集合 数据行数等于第一个表符合查询条件数据行数乘以第二个表符合查询条件数据行数。...(三) 使用WHERE子句设置查询条件 WHERE子句设置查询条件,过滤掉不需要数据行。...交叉连接(CROSS JOIN)没有WHERE 子句,它返回连接表中所有数据行笛卡尔积,其结果集合 数据行数等于第一个表符合查询条件数据行数乘以第二个表符合查询条件数据行数。

2.7K20

sql 复习练习

,在SQL语句组合时用较多 “where 1=1” 是表示选择全部   “where 1=2”全部不选, : if @strWhere !...(三) 使用WHERE子句设置查询条件 WHERE子句设置查询条件,过滤掉不需要数据行。...交叉连接(CROSS JOIN)没有WHERE 子句,它返回连接表中所有数据行笛卡尔积,其结果集合 数据行数等于第一个表符合查询条件数据行数乘以第二个表符合查询条件数据行数。...(三) 使用WHERE子句设置查询条件 WHERE子句设置查询条件,过滤掉不需要数据行。...交叉连接(CROSS JOIN)没有WHERE 子句,它返回连接表中所有数据行笛卡尔积,其结果集合 数据行数等于第一个表符合查询条件数据行数乘以第二个表符合查询条件数据行数。

2K60

SQL调优】同事追着我骂,只因一句祖传SQL代码

一连串自问自答,我想起来了,是由于之前某张统计表设计不太合理,导致表数据时间段冗余较多,而统计展示又要很精细,所以逼出了我这句祖传sql,嗯,都是表设计锅,哈哈哈,甩锅成功!...=或操作符,否则将导致引擎放弃使用索引而进行全表扫描 4)应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,: select id from...num=20 5)慎用in 和 not in,否则会导致全表扫描,: select id from t where num in(1,2,3) 对于连续数值,能用 between 就不要用...、用WHERE子句替换HAVING子句 17、使用内部函数提高SQL效率 18、注意WHERE子句连接顺序 数据库采用自右而左顺序解析WHERE子句,根据这个原理,表之间连接必须写在其他...WHERE条件之左, 那些可以过滤掉最大数量记录条件必须写在WHERE子句之右。

48910

sql语句面试经典50题_sql基础知识面试题

: 其他面试题: ---- SQL基础知识整理: select 查询结果 : [学号,平均成绩:组函数avg(成绩)] from 从哪张表查找数据 :[涉及到成绩:成绩表score]...where 查询条件 :[b.课程号=’0003′ and b.成绩>80] group by 分组 :[每个学生平均:按学号分组](oracle,SQL server中出现在select...在group by子句后出现),MySQL可以不用 having 对分组结果指定条件 :[大于60分] order by 对查询结果排序 :[增序: 成绩 ASC / 降序: 成绩...) 教师表“教师号”列设置为主键约束, 教师姓名这一列设置约束为“null”(红框地方不勾选),表示这一列允许包含空值(null) 2.向表添加数据 1)向学生表里添加数据 添加数据sql...4)教师表里添加数据 添加数据sql -- 教师表:添加数据 insert into teacher(教师号,教师姓名) values('0001' , '孟扎扎'); insert into

2.8K20

常见SQL面试题:经典50例

,相信就没有大问题了,这篇文章分享SQL50题 SQL基础知识整理 select 查询结果,: [学号,平均成绩:组函数avg(成绩)] from 从哪张表查找数据,:[涉及到成绩:成绩表score...] where 查询条件:[b.课程号='0003' and b.成绩>80] group by 分组,:[每个学生平均:按学号分组](oracle,SQL server中出现在select 子句非分组函数...,必须出现在group by子句后出现),MySQL可以不用 having 对分组结果指定条件:[大于60分] order by 对查询结果排序,:[增序: 成绩 ASC / 降序: 成绩 DESC...(oracle,SQL server中出现在select 子句非分组函数,必须出现在 group by子句后) having ......推荐:250期面试题汇总 向表添加数据 1)向学生表里添加数据 添加数据sql insert into student(学号,姓名,出生日期,性别) values('0001' , '猴子'

6.6K42

MySQL基础SQL编程学习1

---- 0x03 SQL语句 SELECT 语句 描述:SELECT 语句用于从数据库中选取数据,可以加上条件或者语句参数进行过滤显示数据; SQL 查询五种子句where(条件查询)、having...=, 表示(不等于), BETWEEN(在某个范围), LIKE(搜索某种模式), IN(指定针对某个列多个可能值),IS(是否赛某列值) (2) 逻辑运算: (优先级排列), not (满足不包含该条件值...语句中DISTINCT必须与WHERE子句联合使用,否则输出信息不会有变化且字段不能用*代替; 注:SQL语句中BETWEEN .....BETWEEN 操作符 描述:BETWEEN 操作符用于选取介于两个值之间数据范围值(值可以是数值,文本或者日期)。...如需显示不在上面实例范围网站,请使用 NOT BETWEEN: SELECT * FROM Websites WHERE alexa NOT BETWEEN 1 AND 20; -- 选取 alexa

4.6K20
领券