SQL 查询条件放到 JOIN 子句与 WHERE 子句的差别
SQL 查询 条件 Join where 放到 子句 差别
2023-06-13 09:18:31 时间
我们再写 SQL 的时候,最常碰到一个问题就是,把查询条件放到 JOIN 子句和放到 WHERE 子句有什么不同呢?比如:
查询条件放到 JOIN 语句:
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts JOIN wp_skus sku ON sku.post_id = wp_posts.ID AND sku.type=1 WHERE 1=1 AND wp_posts.post_type = 'product' AND wp_posts.post_status = 'publish' ORDER BY sku.price DESC, wp_posts.post_date DESC LIMIT 0, 10
查询条件放到 WHERE 语句:
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts JOIN wp_skus sku ON sku.post_id = wp_posts.ID WHERE 1=1 AND wp_posts.post_type = 'product' AND wp_posts.post_status = 'publish' AND sku.type=1 ORDER BY sku.price DESC, wp_posts.post_date DESC LIMIT 0, 10
结果分两种情况:
INNER JOIN:简单说如果使用的是 INNER JOIN,这两种查询的结果相同。但是语义上:JOIN - 描述两个表之间的关系,WHERE - 从结果集中删除行。这两种方法直接存在显著的语义上的差别,尽管两种方法对结果和性能都无影响,但是选择正确的语法将有助于代码更易于被阅读。
OUTER JOIN:如果使用的是 OUTER JOIN,可能会不同,比如上面的 SQL 改成 LEFT JOIN,并且连接条件失败,则查询条件放到 JOIN 子句仍将获得一行,但是如果放到 WHERE 子句,则它将被过滤掉,因为 NULL 不等于 1。
相关文章
- 数据库查询优化的一般步骤_sql创建数据库失败
- SQL service基础(四)连接查询、自身连接查询、外连接查询和复合条件连接查询[通俗易懂]
- VBA-ADO-SQL-002单条件查询语句
- 关于SQL的几道小题详解(sql进阶)
- 在SQL Server中查询资料库的TABLE数量与名称的sql语句
- sql server递归子节点、父节点sql查询表结构的实例
- Oracle如何导入SQL文件(oracle导入sql文件)
- 标题:使用Oracle 查询 SQL 语句(oracle查sql)
- sql develperMac上使用Oracle SQL Developer的指南(mac版oracle)
- 连接Oracle数据库,使用SQL进行查询(sql连oracle)
- SQL与MSSQL:各有自身特性的不同之处(sql与mssql的区别)
- SQL Server实现高效分页查询技巧(sqlserver分页查询)
- SQL Server让程序开发更轻松(sqlserver干嘛的)
- Orcle 解决SQL查询问题的神器(.sql oracle)
- MySQL中SQL窗口教程,轻松了解查询修改删除数据库表中数据的基本操作(mysql 中sql窗口)
- MySQL SQL意义简析(mysql中sql的含义)
- 如何在MySQL中运行SQL查询(mysql上运行sql)
- MySQL 上下级 SQL 查询技巧(mysql 上下级sql)
- MySQL查询父子级关系的SQL语句(mysql 上下级sql)
- Oracle中的多表查询运用SQL实现大效能(oracle中的多表查询)
- Oracle中SQL紧密相连(oracle中sql联系)
- 查询Oracle中SQL语句查看显示报表(oracle中sql显示)
- Oracle SQL从简史到精华(oracle sql历史)
- sql查询慢的原因分析
- Sql学习第三天——SQL关于CTE(公用表达式)的递归查询使用