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

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 执行顺序

了解 SQL 执行顺序非常有价值,它可以让我们写出语法正确 SQL,帮助我们简化编写新查询过程。 本文将在 MySQL 基础上,介绍查询语句执行顺序。...这些优化可能会改变实际执行顺序,但它们最终必须返回与以默认执行顺序运行查询结果相同。 按照执行顺序规则,排在后面的子句产生结果不能被前面的子句引用。...比如: 不能在 WHERE 子句里面使用 SELECT 子句设置别名,因为 WHERE 子句先于 SELECT 子句执行; # 执行失败,提示“Unknown column 'ename_job' in...不能在 WHERE 子句里面过滤 GROUP BY 子句聚合结果,因为 WHERE 子句先于 GROUP BY 子句执行; # 执行不通过,提示“Invalid use of group function...比如下面这条 SQL ,看起来像是 SELECT 子句别名被 GROUP BY 子句引用。

2.2K31

SQL基础查询方法

Select查询 4.1 查询基础知识 查询是对存储在 SQL Server 中数据一种请求。...本地 SQL Server 实例中视图。SQL Server 在内部将一个视图引用按照组成该视图基表解析为多个引用。 链接表。它们是 OLE DB 数据源中表,称之为“分布式查询”。...FROM 子句还可以包含联接规范。这些联接规范定义了 SQL Server 在从一个表导航到另一个表时使用特定路径。 FROM 子句还用在 DELETE 和 UPDATE 语句中以定义要修改表。...选择列表中项包括下列内容: 一个简单表达式,例如:对函数、变量、常量或者表或视图中引用。 一个标量子查询。该 SELECT 语句每个结果集行计算为单个值。...WHERE 和 HAVING 是筛选器。这两个子句指定一系列搜索条件,只有那些满足搜索条件行才用于生成结果集。我们称满足搜索条件行包含在结果集中。

4.3K10

基本 SQL 之增删改查(一)

1、where 子句 where 子句又被称为条件子句,用于筛选查询出来数据集,指定条件语句中可以使用基本算术、关系和逻辑运算,例如:>,<,=,!=,&&,||。...select * from person where name='yang'&& age=22; 还是很简单,虽然 where 子句很简单,但它却是我们 SQL 查询中最重要一个关键字,基本上每一条...2、LIKE 子句 LIKE 子句,我们一般用来做一些简单搜索查询,或者说模糊匹配,表达式主要涉及到两个符号: 百分号 %:匹配任意多个字符 下划线 _:匹配固定一个字符 举几个例子吧,同样以我们...5、GROUP BY 子句 GROUP BY 子句用于查询返回结果集进行一个分组,并展示各个分组中排在一个记录,分组中其余成员隐藏。...6、HAVING 子句 HAVING 子句在我看来就是一个高配版 where 子句,无论是我们分组或是排序,都是基于以返回结果集,也就是说 where 子句筛选已经结束。

1.2K30

SQL高级查询方法

联接条件可通过以下方式定义两个表在查询关联方式: 指定每个表中要用于联接列。典型联接条件在一个表中指定一个外键,而在另一个表中指定与其关联键。...联接条件与 WHERE 和 HAVING 搜索条件相结合,用于控制从 FROM 子句所引用基表中选定行。 比如下列联接因为是内部联接,因此也可以改写为在WHERE条件中指定联接。...12 AND StandardPrice > 10 13 AND Name LIKE N'F%'; 在 FROM 子句中指定联接条件有助于这些联接条件与 WHERE 子句中可能指定其他任何搜索条件分开...FULL JOIN 或 FULL OUTER JOIN 完整外部联接返回左表和右表中所有行。当某一行在另一个表中没有匹配行时,另一个选择列表列包含空值。...UNION 结果集列名与 UNION 运算符中第一个 SELECT 语句结果集中列名相同。另一个 SELECT 语句结果集列名将被忽略。

5.7K20

图解sql面试题:如何查找重复数据?

【题目】 编写一个SQL查询,查找学生表中所有重复学生名。 【解题思路】 1.看到“找重复”关键字眼,首先要用分组函数(group by),再用聚合函数中计数函数count()给姓名列计数。...计数 from 学生表 group by 姓名 ) as 辅助表 where 计数 > 1; 结果: 方法二 这时候有的同学可能会想,为什么要这么麻烦创建一个查询,不能用这个语句(count放到...前面提到聚合函数(count),where字句无法与聚合函数一起使用。因为where子句运行顺序排在第二,运行到where时,表还没有被分组。...(如果不清楚,可以系统看下我之前课程《从零学会SQL:汇总分析》) 如果要对分组查询结果进行筛选,可以使用having子句。...2)考察对having语句掌握,很多人会把聚合函数写到where子句中。 3)熟记SQL子句书写顺序和运行顺序。 【举一反三】 本题也可以拓展为:找出重复出现n次数据。

22410

图解面试题:如何查找重复数据?

image.png 【题目】 编写一个SQL查询,查找学生表中所有重复学生名。...1; 结果: image.png 方法二 这时候有的同学可能会想,为什么要这么麻烦创建一个查询,不能用这个语句(count放到where字句中)直接得出答案吗?...image.png 前面提到聚合函数(count),where字句无法与聚合函数一起使用。因为where子句运行顺序排在第二,运行到where时,表还没有被分组。...(如果不清楚,可以系统看下我之前课程《从零学会SQL:汇总分析》) image.png 如果要对分组查询结果进行筛选,可以使用having子句。...2)考察对having语句掌握,很多人会把聚合函数写到where子句中。 3)熟记SQL子句书写顺序和运行顺序。 【举一反三】 本题也可以拓展为:找出重复出现n次数据。

60100

SQL数据库查询语句

查询功能强大,是SQL语言灵魂语句,也是SQL中使用频率最高语句。...即上例中where子句等价于:where 专业名=’计算机’。 5.使用null查询 当需要判定一个表达式值是否为空值时,使用 is null关键字。...}[,…n][by 分组表达式[,…n] 功能:compute子句产生一个单独汇总行,用以显示统计信息。...(八)、select语句其它功能: 1、复制或创建表(into子句): into子句功能:select语句查询所得结果保存到一个新建表中。...select * into xs7 from xs where 1=2 /*这里指定一个永远为假条件*,以使无记录被复制/ 2、合并结果集(Union子句):可以两个或多个select查询结果合并成一个结果集

4.2K20

笨办法学 Python · 续 练习 40:SQL 读取

,基于三个表中数据,和WHERE子句。...ex6.sql:2 为了pet连接到person,我需要遍历person_pet关系表。在 SQL 中,这意味着我需要在FROM之后列出所有三个表。 ex6.sql:3 WHERE子句开始。...ex6.sql:5 并且我需要以相同方式,人person连接到person_pet。现在,数据库可以仅仅搜索 id 列全部匹配行,这些就是连接行。...编写一个查询WHERE子句中使用多于一个测试,使用AND来编写它。例如WHERE first_name = "Zed" AND age > 30。...执行另一个查询,使用三个条件,并使用AND和OR运算符来搜索行。 如果你已经知道像 Python 或 Ruby 这样语言,这可能是一个查看数据令人惊奇方式。

51320

SQL必知必会》万字精华-第1到13章

-- 找出价格为NULL数据 五、高级数据过滤 本节中介绍是如何组合WHERE子句以建立功能更强、更高级搜索条件 组合WHERE子句 操作符operator:用来联结或改变WHERE子句子句关键字...但是最好使用 执行算术运算 计算字段另一个常见运算是对检索出来数据进行算术运算。...WHERE prod_id = 'RGAN01')); 作为计算字段使用子查询 使用子查询另一个方法是创建计算字段 SELECT...cust_name ,cust_state ,(SELECT COUNT(*) -- 查询作为一个计算字段输出:统计每个cust_id数量 FROM Orders WHERE...C.cust_id = O.cust_id -- 多个表联结查询 AND OI.order_num = O.order_num AND prod_id = 'RGAN01' 3、外联结 有时候我们需要将一个表中行和另一个表中行相关联

7K00

SQL Server 2012学习笔记 (三) ----- SQL Server SQL语句

合并操作与联接相似,因为它们都是两个表合并起来形成另一个方法。然而,它们合并方法有本质上不同,结果表形状如下所示。 注:A和B分别代表两个数据源表。 ?   ...嵌套查询是指一个查询块嵌套在另一个查询WHERE子句或HAVING短语条件中查询。嵌套查询中上层查询块称为外侧查询或父查询,下层查询块称为内层查询或子查询。...联接全部意义在于水平方向上合并两个数据集合,并产生一个结果集合。   联接条件可在 FROM 或 WHERE 子句中指定,建议在 FROM 子句中指定联接条件。...WHERE 和 HAVING 子句还可以包含搜索条件,以进一步筛选根据联接条件选择行。...CASE函数具有两种格式: 简单 CASE 函数某个表达式与一组简单表达式进行比较以确定结果。 CASE 搜索函数计算一组布尔表达式以确定结果。   两种格式都支持可选 ELSE 参数。

6.4K20

数据库系统:第三章 关系数据库标准语言SQL

创建基本表(其他数据库对象也一样)时,若没有指定模式,系统根据搜索路径来确定该对象所属模式,搜索路径包含一组模式列表,关系数据库管理系统会使用模式列表中第一个存在模式作为数据库对象模式名,若搜索路径中模式名都不存在...子句匹配,包括值个数、值类型 例子:一个新学生记录插入到Student表中....对查询结果分组 使用GROUP BY子句分组,细化聚集函数作用对象(范围)。对查询结果分组后,聚集函数分别作用于每个组。...概述 一个SELECT-FROM-WHERE语句称为一个查询块。一个查询块嵌套在另一个查询WHERE子句或HAVING短语条件中查询称为嵌套查询。...FROM SC y WHERE y.Sno=x.Sno) ; 从外层查询中取出SC一个元组,值(16110581111)传递给内层查询

2.6K10

数据库知识学习,数据库设计优化攻略(十)

3.3 程序操作优化 概述:程序访问优化也可以认为是访问 SQL 语句优化,一个 SQL 语句是可以减少非常多程序性能,下面列出常用错误习惯,并且提出相应解决方案 3.3.1 操作符优化...like 不能完成复杂搜索,如搜索一个单词或一个短语,搜索一个另一个单词或短语相 近单词或短语,或者是搜索同义词; (2)实现全文搜索比实现 like 搜索更容易(特别是复杂搜索); 3.3.2...SQL 语句优化 ➢ 在查询中不要使用 select * 为什么不能使用,地球人都知道,但是很多人都习惯这样用,要明白能省就省,而且这样查询数据库不能利用“覆盖索引”了 ➢ 尽量写 WHERE...子句 尽量不要写没有 WHERE SQL 语句 ➢ 注意 SELECT INTO 后 WHERE 子句 因为 SELECT INTO 把数据插入到临时表,这个过程会锁定一些系统表,如果这个 WHERE...第一个原则:在 where 子句中应把最具限制性条件放在最前面。

61810

T-SQL进阶:超越基础 Level 2:编写子查询

在“超越基础”楼梯这个层次上,我讨论一个查询不同方面,在将来一个层面上,我讨论相关查询。 什么是子查询? 子查询只是一个SELECT语句,它包含在另一个Transact-SQL语句中。...子查询另一个特点是可以独立于外部查询运行,并且无错误地运行,并且可能返回一组行或空行集。 子查询另一种形式是相关子查询。但是相关查询不能独立于外部Transact SQL语句运行。...Transact-SQL语句中有许多不同地方,需要一个查询来返回单个列值,例如在选择列表中WHERE子句等。...因此,对于我情况使用子查询或JOIN查询产生了等效性能,正如微软所记录那样。 总结 子查询是嵌入另一个Transact-SQL语句SELECT语句。...问题1: 完成这个句子“一个查询另一个Transact-SQL语句中SELECT语句,_____________________”。 不能独立于完整查询运行。 引用来自外部查询列。

6K10

SQL 简易教程 中

这里查询排名前 3 网站 SELECT * FROM Websites ORDER BY alexa LIMIT 3; SQL LIKE 操作符 LIKE 操作符用于在 WHERE 子句搜索列中指定模式...把通配符置于开始处,搜索起来是最慢SQL IN 操作符 IN 操作符允许您在 WHERE 子句中规定多个值。...只需要添加促使查询没有数据返回 WHERE 子句即可: SELECT * INTO newtable FROM table1 WHERE 1=0; INSERT INTO SELECT 语句 从一个表复制数据...我们可以从一个表中复制所有的列插入到另一个已存在表中: INSERT INTO table2 SELECT * FROM table1; 或者我们可以只复制希望列插入到另一个已存在表中: INSERT...否则指定变更后信息全量覆盖变更前信息。 SQL AUTO INCREMENT 字段 Auto-increment 会在新记录插入表中时生成一个唯一数字。

2.8K10

SQL优化一(SQL使用技巧)

over()分析时要求排序,即sql语句中order by子句内容和开窗函数over()中order by子句内容一样,那么sql语句中排序先执行,分析函数在分析时就不必再排序;    ...,那么sql语句中排序最后在分析函数分析结束后执行排序。...7、KEEP使用      keep是Oracle下另一个分析函数,他用法不同于通过over关键字指定分析函数,可以用于这样一种场合下:取同一个分组下以某个字段排序后,对指定字段取最小或最大那个值...FIRST 功能描述:从DENSE_RANK返回集合中取出排在最前面的一个行(可能多行,因为值可能相等),因此完整语法需要在开始处加上一个集合函数以从中取出记录。...8、SQL查询正则表达式使用   ORACLE中支持正则表达式函数主要有下面四个: 1,REGEXP_LIKE :与LIKE功能相似     select * from emp where regexp_like

2.5K40

SQL命令 SELECT(一)

在通过ODBC、JDBC或动态SQL处理SELECT查询中指定INTO子句导致SQLCODE -422错误。 FROM table-ref - 可选——对一个或多个表引用,从中检索数据。...在动态SQL中,SELECT值检索到%SQL中。 声明类。 IRIS设置一个状态变量SQLCODE,它指示SELECT成功或失败。...Uses of SELECT 可以在以下上下文中使用SELECT语句: 作为一个独立查询准备作为动态SQL查询,嵌入式SQL查询,或类查询。...INSERT语句可以使用SELECT多行数据值插入到表中,从另一个表中选择数据。...这些条件由逻辑操作符链接一个或多个谓词指定; WHERE子句返回满足这些谓词条件所有记录。 WHERE子句谓词不能包含聚合函数。 GROUP BY子句,它指定以逗号分隔列列表。

5.3K10
领券