在内连接的 ON 子句中放置条件与主查询的 where 子句中放置条件之间是否存在逻辑差异?

2023-12-08

考虑这两个相似的 SQL

(ON 子句中的条件)

select t1.field1, t2.field1
from
table1 t1 inner join table2 t2 on t1.id = t2.id and t1.boolfield = 1

(WHERE 子句中的条件)

select t1.field1, t2.field1
from
table1 t1 inner join table2 t2 on t1.id = t2.id
where t1.boolfield = 1

我已经对此进行了一些测试,我可以看到在外部连接的两个不同位置放置条件之间的区别。 但在内连接的情况下,结果集会有所不同吗?


对于 INNER JOIN,没有有效的区别,尽管我认为第二个选项更干净。

对于 LEFT JOIN 来说,存在巨大的差异。 ON 子句指定将从表中选择哪些记录进行比较,WHERE 子句过滤结果。

示例 1:返回 tbl 1 中的所有行,并将它们与 tbl2 中 boolfield=1 的相应行进行匹配

Select *
From tbl1
  LEFT JOIN tbl2 on tbl1.id=tbl2.id and tbl2.boolfield=1

示例 2:将仅包含 tbl1 中的行,这些行在 tbl2 中具有 boolfield=1 的匹配行。它连接表,然后过滤掉不满足条件的行。

Select *
From tbl1
  LEFT JOIN tbl2 on tbl1.id=tbl2.id
WHERE tbl2.boolfield=1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在内连接的 ON 子句中放置条件与主查询的 where 子句中放置条件之间是否存在逻辑差异? 的相关文章

  • 通过 phpMyAdmin 在 MySQL 中创建 id 字段时是否必须指定整数长度?

    我看到有人在教程中没有设置长度 而是专门为了统计用户总数而设置为自动递增 我一直习惯于总是指定长度 因为我认为这是强制性的 但我想问我是否可以将其留空 除非它特别是始终设置长度的日期或密码等 如果我不确定的话 我曾经将其设置为11位或更多
  • SQL - 选择具有最大值的所有行

    我有这个 SQL 查询 SELECT id COUNT AS price FROM SELECT FROM rt WHERE somecondition AS st JOIN tt ON st id tt id GROUP BY id 现在
  • Django 多对多查询的逻辑或返回重复结果

    我有具有多对多关系的模型 如下所示 class Contact models Model name models TextField address models TextField class Mail models Model to m
  • 触发器定义中的 DELETE 语句问题

    我创建了一个插入 更新触发器 旨在根据插入的数据更新不同表中的信息 触发器执行 或应该执行 的最后一件事是从目标表中删除所有数据 这些数据的条件在触发器的插入部分期间可能已更改 除了最后的之外 一切似乎都在触发DELETE陈述 它正在执行D
  • 仅当列不为 NULL 时才连接列

    我有一个像这样的 SQL Server 表 PERSON NAME PHONE PHONE1 PHONE2 PHONE CONCAT Name1 12345 Null Null Null
  • MySQL - 将字段的默认值设置为字符串连接函数

    我有一个看起来有点像这个的表 actor forename surname stage name 我想将 stage name 更新为默认值 forename surname So that insert into actors foren
  • SQL Server:十进制精度/小数位数产生奇怪的结果

    我正在为一个项目编写一些 SQL 我注意到 SQL Server 中一些看似奇怪的行为 涉及除以小数时的答案 以下是一些示例 说明了我所看到的行为 DECLARE Ratio Decimal 38 16 SET Ratio CAST 210
  • 是否可以在 postgresql 中创建触发器而不执行过程?

    我想创建一个程序 其主体为 BL 我在 SQL 中找到了相同的示例 但在 postgresql 中没有找到 每个 RDBMS 都有自己的 SQL 语言 您无法在 PostgreSQL 中创建触发器 因为您可以在 Oracle MS SQL
  • 将 Linq 表达式转换为 SQL Server 查询

    我正在使用一些 crm 框架 该框架没有任何内部 orm 并且不使用实体框架 仅使用纯 sql 查询 我在数据库中的每个表都有实体 所以我有例如 public class Customer public string FirstName g
  • 当 SQL 包含变量时在 pgAdmin 中调试 SQL

    在 SQL Server 中 我可以从应用程序中复制 sql 代码并将其粘贴到 SSMS 中 声明并分配 sql 中存在的变量并运行 是的 很棒的调试场景 例如 请注意 我很生疏 语法可能不正确 declare x as varchar 1
  • Oracle数据库中的自增主键

    我想在 SQL Server 的列中实现标识或自动递增值 CREATE TABLE RollingStock Id NUMBER IDENTITY 1 1 Name Varchar2 80 NOT NULL 如何才能做到这一点 正如 Orb
  • SSRS报告不显示数据

    我刚刚创建了 SQL Server 2005 SSRS 报告 数据未显示在预览窗格中 数据集是根据字符串参数从存储过程正确填充的 我可以在数据窗格中执行它 在预览窗格中运行报表时 会显示正确的行数 但单元格的内容不包含任何数据 源数据集基于
  • ssis将N个表从源服务器加载到目标服务器的最佳实践

    我需要将 N 个 大约 50 个 表从源数据库加载到目标数据库 每个表都与其他表不同 因此元数据不同 我想我可以使用父 pkg 来调用子 pkg 其中每个子 pkg 都有简单的结构 例如 DFT 来映射要导入的表 1 个子 pkg gt 1
  • 在 SQL 中查询行序列

    假设我正在存储events有关联users如下表 其中dt代表事件的时间戳 dt user event 1 1 A 2 1 D 3 1 B 4 1 C 5 1 B 6 2 B 7 2 B 8 2 A 9 2 A 10 2 C 这样我们就可以
  • 排除任何字段中具有 NULL 值的行结果?

    我有一个像这样的简单选择 SELECT FROM table WHERE fk id 10020 它可以工作 但有一些字段为 NULL 没有模式所以做了 SELECT FROM table WHERE fk id 10020 AND NOT
  • 如何从表中选择层次结构中的最低级别

    我有一个具有父 子关系的表 Table A Column Id int Column Parent Id int Column Description text 一组示例数据如下 999 NULL Corp 998 999 Div1 997
  • SQL COUNT(*) 返回错误答案

    以下脚本应返回部门名称以及这些部门中的员工人数 营销 行政和销售部门有 0 名员工 但返回值不是 0 而是 1 我怎样才能纠正它 select Department Departments DepartmentID count as Num
  • 使用 php 将 HLS Segment (ts) 视频转换并加入到 mp4

    你好我正在使用这个工具 https github com Ejz HLSDownloader https github com Ejz HLSDownloader将 HLS 视频片段从 m3u8 播放列表下载到 ts 文件中 不 我不知道如
  • 对时间序列数据重新采样

    我有一个以毫秒为单位的时间序列列表 我想对时间序列进行重新采样并对组应用平均值 我如何在 Postgres 中实现它 重新采样 是指聚合一秒或一分钟内的所有时间戳 一秒或一分钟内的所有行形成一组 表结构 date x y z Use dat
  • Linq-to-entities,在一个查询中获取结果+行数

    我已经看到了有关此事的多个问题 但它们已经有 2 年 或更长 的历史了 所以我想知道这方面是否有任何变化 基本思想是填充网格视图并创建自定义分页 所以 我还需要结果和行数 在 SQL 中 这将类似于 SELECT COUNT id Id N

随机推荐

  • 使用react-native切换手电筒(世博会)

    我正在尝试从我的反应本机导出应用程序切换手电筒 这Plugin不起作用 因为我正在使用 expo flashMode 属性世博相机组件允许我在拍照时切换闪光灯 有没有办法以其他方式切换手电筒 解决了React Native Expo 项目中
  • 单元测试 typescript 指令模板 karma-jasmine,html 未定义

    最近 我开始使用 karma jasmine 对我的打字稿代码进行单元测试 在为服务和简单 指令创建并运行测试用例后 我为自定义指令创建了一个测试用例 该测试用例有一个控制器 正在注入一项服务 并使用 4 个作用域变量与外界通信 这是一个简
  • Google Apps 脚本 - 从 HTML 创建 PDF 时不显示图像

    我正在尝试编写一个脚本 该脚本将输出带有已输入表单的值的 PDF 在此 PDF 中 我想在页面顶部添加一个徽标 该徽标是 Google Drive 文件夹中的图像 基于这个问题 和其他 图像需要转换为 base64 然后添加到 HTML 我
  • 泛型类型的实例[重复]

    这个问题在这里已经有答案了 我的问题是这样的 为什么不能用 new T 实例化泛型类型 而用类 Class 的 newInstance 就可以呢 您需要使用反射 newInstance 因为在编译时 需要链接其构造函数的类是未知的 所以编译
  • 如何使用JavaScript函数重定向到Struts2中的另一个jsp页面

    我想在打开时使用 JavaScript 函数将 JSP 重定向到另一个页面BeforeLogin页 但我收到以下错误消息 找不到 Struts 调度程序 这通常是由于使用 Struts 标签而没有关联的过滤器造成的 Struts 标签仅在请
  • 如何将 eval() 函数与变量列表一起使用?

    我有一个字符串形式的函数列表 y x 3 x 2 y 2 17 2 functions in list 我有一个清单Sympy Symbol对象 基本上是变量 whos name属性对应于函数字符串中的变量名称 Symbol x Symbo
  • 客户可配置的 ASP.NET 网站安全性,用于对页面和按钮访问进行细粒度控制

    我有一个 ASP NET 2 0 还没有 ajax 网站 将以编译的形式部署在多个客户站点上 通常该站点仅是 Intranet 一些客户信任他们的所有人 并且不关心限制对网站和 或页面功能的访问 另一些客户不信任任何人 只希望某些人和 或组
  • 哪个 Visual Studio 组件包含 MSVC Hostx 文件? [复制]

    这个问题在这里已经有答案了 My NET溶液含有一个editbin命令输入PostBuild events 我们尝试创建一个Docker容器用于编译我们的解决方案 为此 我们安装了VS17与安装人员 我们找不到哪个成分我们应该选择得到edi
  • 在Python中读取JSON格式的字符串

    我在 python 中有一个简单的 Websockets 服务器 它从 Android 应用程序客户端接收消息 我尝试以 JSON 格式从客户端生成消息负载 但我觉得 仅当它在字符串中时才起作用 我发现的一种解决方案是保留消息字符串 但采用
  • PHP中检查变量是否为数字和正整数?

    例如 说 如何检查变量是否存在 post id是一个数字 并且是一个正整数 即 0 9 不是浮点数 分数或负数 EDIT 无法使用is int cause GET返回一个字符串 认为我需要使用intval or ctype digit 后者
  • Windows 上的 Eclipse 上的 OpenCV

    我正在尝试在 Windows 上安装 opencv 这是我的步骤 从网站下载opencv 2 4 3 运行exe 将文件夹解压到同一路径中 打开eclipse 之前设置并配置了MinGW 创建了新项目 XYZ 添加了新文件夹 src 添加了
  • 在 nlog 中以编程方式创建数据库以启用 DatabaseTarget

    我正在 C 中创建一个 DatabaseTarget 对象 并使用它将数据记录到 NLog 数据库中 如果数据库不存在 nlog 目标将失败 我想检查数据库是否存在 以及是否没有创建它和日志表 我可以看到 targetDB Install
  • 数据透视表手动更新不起作用

    我有一个数据透视表 我试图根据数组中的值选择某些数据透视项 我需要这个过程更快 所以我尝试使用 application calculation xlcalculationmanual 和pivottables manualupdate tr
  • 检查曲线是否闭合

    如何有效地检查曲线是否闭合 例如看这个图 曲线在黑色背景上始终为白色 我尝试使用洪水填充算法 但在这种情况下效果不佳 我不明白如何修改它 这里是代码 public static boolean isWhite BufferedImage i
  • 锁定文件以便在 Windows 上访问

    Using portalocker我们可以通过以下方式锁定文件的访问 f open M99 r portalocker lock f portalocker LOCK EX The lock可以使用删除该文件 f close or port
  • 对 Hashmap 内的对象值进行排序

    我想按对象的值对哈希图进行排序 在本例中 按国家 地区代码 KEY OBJECT String LoyaltyCountry country name country code country loc 我的代码如下 public stati
  • 名称中带有点的 Java 包文件夹

    是否按照规范 给定MyClass java文件包含 package com mycorp foo public class MyClass public static void main String args System out pri
  • 使用未解析的标识符 countElements [重复]

    这个问题在这里已经有答案了 let newLength countElements textField text countElements string range length 当我运行我的应用程序时 它突然显示无法解析的标识符的错误
  • 列出 Google 应用脚本项目

    我正在尝试使用文档中的 Google Drive File API 列出我的所有 google 脚本文件here 然而我总是得到一个空的 列表 我认为我的令牌和范围都很好 因为我从 Google OAuth2 取回了这个 access to
  • 在内连接的 ON 子句中放置条件与主查询的 where 子句中放置条件之间是否存在逻辑差异?

    考虑这两个相似的 SQL ON 子句中的条件 select t1 field1 t2 field1 from table1 t1 inner join table2 t2 on t1 id t2 id and t1 boolfield 1