SQL中EXISTS和IN的区别?

2023-12-20

两者有什么区别EXISTS and INSQL 中的子句?

我们什么时候应该使用EXISTS,以及我们什么时候应该使用IN?


The exists关键字可以以这种方式使用,但实际上它是为了避免计数:

--this statement needs to check the entire table
select count(*) from [table] where ...

--this statement is true as soon as one match is found
exists ( select * from [table] where ... )

这是最有用的地方if条件语句,如exists可以比count.

The in最好在需要传递静态列表的情况下使用:

 select * from [table]
 where [field] in (1, 2, 3)

当你有一张桌子in声明使用 a 更有意义join,但大多数情况下这并不重要。无论哪种方式,查询优化器都应该返回相同的计划。在某些实现中(大多数是较旧的,例如 Microsoft SQL Server 2000)in查询总是会得到一个嵌套连接 https://technet.microsoft.com/en-us/library/ms191318(v=sql.105).aspx计划,同时join查询将使用嵌套,merge https://technet.microsoft.com/en-us/library/ms190967(v=sql.105).aspx or hash https://technet.microsoft.com/en-us/library/ms189313(v=sql.105).aspx作为适当的。更现代的实施方式更加智能,即使在以下情况下也可以调整计划:in用来。

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

SQL中EXISTS和IN的区别? 的相关文章

  • 为什么涉及用户变量的表达式的求值顺序未定义?

    From MySQL手册 http dev mysql com doc refman 5 7 en user variables html以下查询的输出不保证始终相同 SET a 0 SELECT a AS first a a 1 AS s
  • 什么时候应该使用 XML 而不是 SQL? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • SQL/C# - UPSERT 上的主键错误

    UPDATE 简化的问题 从问题中删除了 C 在以下情况下 如何编写一个可以识别两行相同的 UPSERT 看看怎么有一个 b 退格键 在那里编码 奇怪的小字符 SQL 将它们视为相同 虽然我的 UPSERT 将此视为new data并在应该
  • 多个连接到同一个表

    我有这组表格和数据 CREATE TABLE item id INT PRIMARY KEY name VARCHAR CREATE TABLE property id INT PRIMARY KEY name VARCHAR CREATE
  • 使用 SqlDataReader.IsDBNull 时使用列名

    我已经得到了从 SQL DB 读取数据的代码 我不知道应该如何编辑它 以便我可以使用原始列名称而不是列索引 string query SELECT FROM zajezd WHERE event thisrow AND year klien
  • mysql 在 sum() 函数上使用 concat,例如 concat(sum(col1),"%")

    我正在尝试合并多个查询 但其中一个查询使用 sum 当我尝试在此列上应用 concat 时 我得到不需要的 blob 结果 我如何在聚合列上应用 concat 和 union 我期待这个结果 SELECT row 1 col1 UNION
  • Django 查询:“datetime + delta”作为表达式

    好吧 我的问题如下 假设我有下一个模型 这是一个简单的情况 class Period models Model name CharField field specs here start date DateTimeField field s
  • Drupal 视图 - 自定义/修改 SQL

    我遇到了 配置文件复选框 模块的问题 该模块存储以逗号分隔的自定义配置文件字段 问题是我是否创建一个视图来按值过滤 SQL 结果最终是这样的 AND profile values profile interests value in Bus
  • 如何查找列中未使用的ID? [复制]

    这个问题在这里已经有答案了 可能的重复 SQL查询查找丢失的序列号 https stackoverflow com questions 1057389 sql query to find missing sequence numbers 我
  • MYSQL:SQL查询获取自增字段的值

    我有一张桌子 主键是id及其自动递增 现在 当我插入新记录时 我需要获取更新记录的 id 我怎样才能做到这一点 如果我使用查询 select max id from table name 执行后我可以获得id 但我能确定它是刚刚插入的记录的
  • 选定的非聚合值必须是关联组的一部分

    我在 Teradata 中有两个表 Table A 和 Table B 它们之间是 LEFT JOIN 之后我将创建 SELECT 语句 其中包含两个表中的属性 SELECT attribute 1 attribute 2 attribut
  • 如何在sql server中对行号进行内连接

    SQL Server 2008 两张表 表A有以下数据 RowA RowB RowC RowD 表B有以下数据 Row4 Row3 Row2 Row1 我想得到以下输出 RowA Row1 RowB Row2 RowC Row3 RowD
  • MySQL #1093 - 您无法在 FROM 子句中指定用于更新的目标表“赠品”

    I tried UPDATE giveaways SET winner 1 WHERE ID SELECT MAX ID FROM giveaways 但它给出了 1093 您无法指定目标表 赠品 进行更新FROM clause 本文 ht
  • SELECT DISTINCT HAVING 计算唯一条件

    我已经搜索过这个问题的答案 但找不到如何根据条件获取这个不同的记录集 我有一个包含以下示例数据的表 Type Color Location Supplier Apple Green New York ABC Apple Green New
  • Oracle内置函数元数据

    有没有办法获取 Oracle 内置聚合和其他功能的元数据 例如AVG STDDEV SQRT ETC 我需要知道对象 id 和参数元 In the SYS ALL OBJECTS查看我找不到任何有用的东西 我也尝试过搜索SYS ALL AR
  • SQLite 自然连接损坏?

    我刚刚开始了解 NATURAL JOIN 而 SQLite 的行为并不像我预期的那样 SELECT FROM r1 NATURAL JOIN r2 NATURAL JOIN r3 and SELECT FROM r1 NATURAL JOI
  • 如何将列中的天数添加到 DB2 中的当前日期?

    我正在编写此 SQL 来动态计算一定的天数 如下所示 但我不知道如何让它工作 因为我不断收到错误 select Current Date Dynamic numbr of days calculation here from TableNa
  • 在 SQL Server 中通过标准差消除异常值

    我试图通过标准差消除 SQL Server 2008 中的异常值 我只想要特定列中包含该列平均值的 1 标准差范围内的值的记录 我怎样才能做到这一点 如果您假设事件呈钟形曲线分布 则只有 68 的值与平均值相差 1 个标准差以内 95 的值
  • 如何在Oracle中从表中选择列,*?

    我正在创建很多脚本 有时为了检查表是否根据我的需要进行更新 我会即时编写几个 SELECT 语句 在 SQL SERVER 中你可以这样写 SELECT Column1 FROM MY TABLE 出于可见性原因 这很有用 但是这似乎在 O
  • Oracle - 获取星期几

    今天是星期二 为什么当我运行这个 SQL 语句时 它说今天不是星期二 SELECT CASE WHEN TO CHAR sysdate Day Tuesday THEN Its Tuesday ELSE Its Not Tuesday EN

随机推荐

  • Laravel + Image Intervention:强制下载未保存的文件

    我想简单地上传文件 调整它们的大小 然后强制下载每个上传的文件 我不想保存文件 调整大小等工作正常 但是我无法强制下载新文件 content image gt stream jpg return response gt download c
  • Quickblox 会话在后台过期。怎么处理呢?

    当用户进入后台时 我从聊天中注销该用户 当用户从后台返回时 我会在聊天中再次记录使用情况 这很有效 但并非每次都有效 有时 当用户将应用程序保持在后台超过 2 小时时 会话就会过期 并且当用户从后台返回时 会话似乎不会自动重新验证 即使使用
  • 编译 Java 类并从命令控制台运行 Java 文件时,如何包含 Java jar 文件?

    我有一个与 postgresql 数据库交互的小 Java 文件 所以我已经下载了驱动程序并在我的文件中导入org postgresql Driver 在命令控制台中我输入javac Myfilename java 然后它编译我运行java
  • JavaScript 异步/等待

    我正在尝试理解 JavaScript 异步 等待 如何重写以下内容 使输出为 Hi 然后 Bye 而不是 Bye 然后 Hi JSFiddle https jsfiddle net tp7tjhvL 1 sayHi then sayBye
  • 设置nginx支持自定义域名

    我有一个 Django Web 应用程序托管在一个虚拟机上 该虚拟机以基于 Debian 的 Ubuntu 作为操作系统 以 nginx 反向代理 Gunicorn 作为 Web 服务器 此 Web 应用程序的 DNS 是myapp clo
  • 如何以编程方式在 WordPress 中创建帖子 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想知道如何在 WordPress
  • 我需要向父 div 添加一个像素

    我有一个 教室 的 div 其中包含每个 学生 的 div 每个 学生 div 都包含一个图像 这是 HTML div class classroom div class student img class student image sr
  • 需要 JQuery 弹出窗口/警报

    我有一个元素列表 每个元素需要有一个相应的弹出窗口 这不是背景变黑的弹出窗口 这更像是一个 JavaScript 警报 尽管我需要在弹出窗口中创建自己的样式按钮 并为其分配我们自己的定制事件 我需要每个弹出窗口将自己适当地放置在用户界面中相
  • 解析接受标头

    有人对解析 HTTP Accept 标头有任何建议 或正则表达式 吗 我正在尝试在 ASP NET MVC 中进行一些内容类型协商 似乎没有内置的方式 这很好 因为这里有很多思想流派 但是解析并不完全微不足道 如果有人已经完成了 我宁愿不重
  • 如何将字符串渲染为html链接

    我向电子邮件发送一些消息 如下所示 string link http localhost 1900 ResetPassword username user UserName reset HashResetParams user UserNa
  • IntelliJ IDEA v12 中的警告

    给出的答案为如何让Intellij Idea显示编译警告 https stackoverflow com questions 4745415 how to get intellij idea to display compilation w
  • 为什么将“extern puts”转换为函数指针“(void(*)(char*))&puts”?

    我正在看例子abo3 c http community corest com gera InsecureProgramming abo3 html from 不安全编程 http community corest com gera Inse
  • 当我使用 Python 的调试版本时,如何使用 gdb?

    我的 gdb 版本与我的系统 python 链接 但我目前正在使用 python 的特殊调试版本 因此 gdb 无法正确启动 并出现如下错误 gdb gdb Symbol Py ZeroStruct has different size i
  • 为什么我的数组在 AJAX 函数之外的行为不同? (填充 jsTree)[重复]

    这个问题在这里已经有答案了 长话短说 我正在为 jsTree 创建一个类似 JSON 的数组 我不明白的是为什么数组非常适合我在 AJAX 成功函数中的需求 但又损坏了outside该功能的 查看我的控制台转储的屏幕截图 您可以看到差异 为
  • 在 Google 地图中绘制一个点周围的半径

    我正在使用 Google Maps API 并添加了标记 现在我想在每个标记周围添加 10 英里的半径 这意味着在缩放时会出现适当的圆形 我不知道该怎么做 而且这似乎不常见 我发现一个看起来不错的例子 http www freemaptoo
  • 如何在不给单元格区域命名的情况下选择单元格区域?

    我想使用应用程序脚本选择单元格 C29 Z50 作为变量 我不想创建命名范围 但如果需要的话我可以 我的目标是创建一些超越颜色的自定义格式 可以使用内置功能 因此 如果单元格 B27 交易 则将 C29 Z50 格式化为数字 否则将 Z29
  • MVC4 Bundle 中的 {version} 通配符

    在 MVC 4 中 我们有捆绑包 在定义捆绑包时 我们可以对文件夹中的所有文件使用 等通配符 在下面的例子中 什么是 version mean public static void RegisterBundles BundleCollect
  • 实体框架不信任投票 - 与 .NET 4 相关吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动
  • 统计C语言中每个单词出现的次数

    我想统计一下 一颗破碎的心 一颗破碎的心灵 这个小文本中每个单词的出现次数 这篇文章的每个单词都是二维的array 100 20 其中 100 是max words20 是max word length 我有一个指点array 100 其中
  • SQL中EXISTS和IN的区别?

    两者有什么区别EXISTS and INSQL 中的子句 我们什么时候应该使用EXISTS 以及我们什么时候应该使用IN The exists关键字可以以这种方式使用 但实际上它是为了避免计数 this statement needs to