EXISTS 子查询中什么更容易阅读? [关闭]

2023-11-28

It's a question of readability. There is no difference in performance.
Old versions of SQL Server were silly enough to look up meta data, but not any more.

SELECT foo FROM bar WHERE EXISTS (SELECT * FROM baz WHERE baz.id = bar.id);
SELECT foo FROM bar WHERE EXISTS (SELECT 1 FROM baz WHERE baz.id = bar.id);

我没有考虑 NULL 或“有趣的变体”,这对我来说似乎并不直观。

SELECT foo FROM bar WHERE EXISTS (SELECT NULL FROM baz WHERE baz.id = bar.id); SELECT foo FROM bar WHERE EXISTS (SELECT 1/0 FROM baz WHERE baz.id = bar.id);罢工>

刚才评论里出现了这个问题。我研究了最流行的 RDBMS 的手册:

  • MS SQL 似乎更青睐SELECT * 在手册中.
  • The PostgreSQL 9.4 手册中的示例 uses SELECT 1.
  • Oracle 11g 有SELECT * in the 语言参考.
  • MySQL 5.7 有SELECT * in the 参考手册但是也SELECT 1在评论中。
  • SQLite 中没有示例语言参考.

A search on SO for code:"EXISTS (SELECT 1" yields 5,048 results.
A search on SO for code:"EXISTS (SELECT *" yields 5,154 results.
Updated links and counts 07.2015.

So SELECT *拥有大众投票和大型商业 RDBMS 的支持。
I find SELECT 1更直观。这就像说“如果至少有一个存在”。
Is SELECT *更直观?


直观的是...EXISTS (SELECT * ..因为你真的不在乎

  • 唯一重要的关键字是EXISTS
  • 的选择...EXISTS (SELECT 1 ..延续了围绕 EXISTS 的普遍神话和迷信(例如,对 MySQL 文档的评论)。
  • ANSI 标准说“无关紧要”
  • 更有趣的是理解 EXISTS 是一个半连接。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

EXISTS 子查询中什么更容易阅读? [关闭] 的相关文章

  • 在 Oracle SQL 中执行 MERGE 时,如何更新 SOURCE 中不匹配的行?

    我有一个main数据库和一个report数据库 我需要同步一个表main into report 但是 当项目在main数据库 我只想设置一个IsDeleted标志在report数据库 执行此操作的优雅方法是什么 我目前正在使用 MERGE
  • PIVOT 运算符中指定的列名“FirstName”与 PIVOT 参数中的现有列名冲突

    当我尝试替换时收到以下错误消息null to zero PIVOT 运算符中指定的列名 jan 与 PIVOT 参数中的现有列名称 查询如下 select from select isnull jan 0 isnull feb 0 sum
  • 当列的数据类型为 int 时,如何用字符串替换 null

    我有一个包含 3 列的表和如下示例数据 所有列都是数据类型int 我有这个查询 select foodid dayid from Schedule 我要更换dayid用字符串 ifdayid null 为此我尝试了这个查询 select f
  • 如何重命名 SQL Server 中名称中带有方括号的内容?

    我的一张桌子上有一列 周围有方括号 Book Category 我想重命名为Book Category 我尝试了以下查询 sp rename BookPublisher Book Category Book Category COLUMN
  • 数据库“key/ID”设计思想、代理键、主键等

    因此 我最近看到多次提到代理键 但我不太确定它是什么以及它与主键有何不同 我总是假设 ID 是表中的主键 如下所示 Users ID Guid FirstName Text LastName Text SSN Int 然而 维基百科将代理键
  • 数据库不存在。确保名称输入正确

    为什么我会出现这个错误 如果您查看屏幕截图 您将看到数据库 仅当我连接到两个数据库引擎时才会发生这种情况 它仅检测下面数据库引擎中的数据库 而不检测突出显示的数据库 除了关闭应用程序并仅打开一个数据库引擎之外 还有其他方法可以使用我的数据库
  • 删除重复的 SQL 记录以允许唯一键

    我在 MYSQL 数据库中有一个表 销售 该表理应强制执行唯一约束以防止重复 事实证明 首先删除欺骗并设置约束有点棘手 表结构 简化 id 唯一 autoinc 产品编号 目标是强制product id 的唯一性 我想要应用的重复数据删除策
  • 如何在Oracle数据库11g中创建新模式/新用户?

    我已经申请了一家公司的实习机会 作为一个问题 他们要求我为他们的公司创建一个具有一定要求的架构 并将DDL文件 我已经安装了 Oracle 数据库 11g Express 版本 但如何在 Oracle 数据库 11g 中创建新架构 我在网上
  • 如何查询多对多表(一个表的值成为列标题)

    给定此表结构 我想展平多对多关系 并将一个表的名称字段中的值设置为列标题 并将同一表中的数量设置为列值 目前可行的想法是将值放入字典 哈希表 中并用代码表示这些数据 但我想知道是否有 SQL 方法可以做到这一点 我还使用 Linq to S
  • 在单个查询中设置和选择?

    我想知道是否可以在单个查询中设置和选择 像这样的事情 SET LOCAL search path TO 1 SET LOCAL ROLE user SELECT from posts 你可以这样做 with some set as sele
  • 查询交叉表视图

    我在 PostgreSQL 中有一个表 如下所示 Item1 Item2 Item3 Item4 Value1 Value2 Value3 Value4 我想要一个查询 该查询将显示如下表 ItemHead ValueHead Item1
  • 增量SQL查询

    我的应用程序有一组固定的 SQL 查询 这些查询以轮询模式运行 每 10 秒一次 由于数据库的大小 gt 100 GB 和设计 超级规范化 我遇到了性能问题 每当数据库上发生更改查询结果的 CRUD 事件时 是否可以对给定查询进行增量更改
  • 如何使用 RODBC 将数据帧保存到数据库生成的主键表

    我想使用 R 脚本将数据框输入到数据库中的现有表中 并且希望数据库中的表具有顺序主键 我的问题是 RODBC 似乎不允许主键约束 这是创建我想要的表的 SQL CREATE TABLE dbo results ID INT IDENTITY
  • 如何在jOOQ中使用别名

    有人可以指导我如何在 jOOQ 中使用别名吗 我尝试查看 jOOQ 文档 但不清楚 如果可能 请提供示例 Both org jooq Table http www jooq org javadoc latest org jooq Table
  • 如何在 postgreSQL 中从时间戳中减去/添加分钟

    我有以下场景 我有员工登记他们的上班 下班手续 但他们有10分钟的容忍度 我通过这种观点得到的最新条目 CREATE OR REPLACE VIEW employees late entries id created datetime en
  • 在 BEFORE INSERT 触发器中使用 IF EXISTS (SELECT ...) (Oracle)

    我的代码不起作用 Oracle 告诉我创建触发器时出现构建错误 显然我无法获得有关构建错误的更准确信息 我以前确实没有做过很多SQL 所以我对语法不太熟悉 我有一种预感 Oracle 不喜欢我的 IF EXISTS SELECT THEN
  • 展平具有未知列数的子/父数据

    我正在努力寻找存储和表示 SQL MySQL DB 和 C Windows 表单中的数据的最佳方法 我的数据映射到如下所示的类时 public class Parent public string UniqueID get set Key
  • 如何列出表中的所有列?

    对于各种流行的数据库系统 如何列出表中的所有列 对于 MySQL 请使用 DESCRIBE name of table 只要您使用 SQL Plus 或 Oracle 的 SQL Developer 这也适用于 Oracle
  • 如何对主索引重新编号

    我有一个简单的 MySQL 表 主索引 id 不是一一编号的 1 31 35 100 等 我希望它们的编号如 1 2 3 4 请告诉我该怎么做 我还想指出的是 我知道该操作可能产生的后果 但我只是想整理一下表格 我同意其他方法也可以 但我只
  • Java/Hibernate - 异常:内部连接池已达到其最大大小,当前没有可用的连接

    我第一次在大学项目中使用 Hibernate 而且我还是个新手 我想我遵循了我的教授和我阅读的一些教程给出的所有指示 但我不断收到标题中的异常 Exception in thread main org hibernate Hibernate

随机推荐

  • Node Js 上的 Axios 不会保留请求服务器上的会话,而 PostMan 会保留

    我可以在 PostMan 上执行以下操作 1 POST方法登录公司服务器 2 以登录用户的身份在公司服务器上发出其他请求 我创建了一个nodejs应用程序来与公司服务器进行通信 我正在使用 axios 库进行上述通信 登录公司服务器后 任何
  • 使用 python xlib 全局捕获、忽略和发送按键事件,识别虚假输入

    我想在普通键盘上实现按键和弦 我想我使用 python xlib 为此 程序必须全局吞下所有关键事件 然后才允许它们通过 我当前的测试只是抓住 1 键 如果按下此键 它将调用一个处理程序 该处理程序通过 xtest fake input 将
  • OpenCV Python 中与多个对象的模板匹配

    我正在尝试使用 opencv python 在图像中查找多个模板 根据这个链接 但问题是 为单个对象返回多个位置略有不同的点 像这样的东西 我不想用cv2 minMaxLoc 因为图像中有多个模板 我写了一个删除平仓头寸的函数 但我想知道这
  • Silverlight 4 - 将 UIElement 渲染为图像

    我有一个UIElement我想捕获用户单击按钮时的快照 当用户单击按钮时 我想采取UIElement并将其当前状态加载到 Image 元素中 我如何渲染UIElement as an Image 假设FrameworkElement你想要渲
  • Smarty 基准测试,有人吗?

    我正在考虑将 Smarty 作为我的 Web 应用程序模板解决方案 现在我担心它相对于普通 PHP 的性能 Smarty 网站说它应该是相同的 但是 我找不到任何人进行真正的基准测试来证明该声明是对还是错 有人做过 Smarty 与普通 P
  • MSVC 大括号初始化与双打似乎违反了标准?

    看看这个简单的程序 int main float f2 7 2 OK with warning float f3 7 199999809265137 OK no warning float f4 7 2 Fails float f5 7 1
  • jQuery ui datepicker向下滚动网页时定位问题

    我有一个使用 jQuery ui 日期选择器的多个实例的网页 我的网页将显示约 80 条记录 这超出了单个屏幕截图的范围 div class recordname div lt additional html here gt 我已将日期选择
  • Android 10:通过 MediaStore 获取带有位置信息的图库

    查看 Android 10 中引入的存储访问更改here 现在默认编辑位置信息 Google 要求我们致电setRequireOriginal 在 MediaStore 对象上 以媒体的 uri 作为参数 当您一张一张地获取媒体时 这是可行
  • 如何每2分钟调用一次函数

    如何在 AngularJS 中每两分钟调用一次保存函数 请帮我 scope save function http url api products method POST data scope product success functio
  • Javascript/HTML5:获取音频标签的当前时间

    我的模板中有一个音频标签 我需要在单击按钮时显示它的当前时间 请检查我下面的代码 var myaudio document getElementsByTagName audio 0 var cur time myaudio currentT
  • 使用BluetoothChat与ELM327通信

    我目前正在尝试通过 BluetoothChat 示例应用程序与 ELM327 OBDII 蓝牙适配器进行通信 我可以连接 因为我更改了 UUID 但是我只能接收启动命令和提示 gt 来发送命令 每当我尝试发送命令时 我都会收到以下信息 CA
  • 为什么 in_array() 返回意外/奇怪的结果?

    Why is in array 有时行为如此奇怪并返回如此意想不到的结果 让我们看几个例子 arrayWithTrue Andreas Philipp true arrayWithNull 1 2 3 null arrayWithMinus
  • 如何签署 JWT 以从 Azure Active Directory 交换访问令牌?

    我正在用nodejs编码 我指的是这个文档 https learn microsoft com en us azure active directory develop v1 oauth2 client creds grant flow s
  • Xcode 中的优化级别

    我用谷歌搜索了这个问题以澄清一些基本概念 但没有找到合适的答案 在 Swift 编译器和 Apple LLVM Objective C 的 Xcode 构建设置中 有多少个优化级别可用于代码生成 Swift 提供了四种不同的优化级别 Ono
  • 以编程方式构建项目

    我需要以编程方式为我正在动态创建的 csproj 构建一个项目 在搜索 Google 时 我发现了 MS 为 MSBuild 引擎提供的类和 API 有了这些信息 我创建了一个执行 msbuild exe 的进程 然后读取输出 但现在我想使
  • Android UnknownHostException Facebook SDK

    情况是这样的 我的应用程序运行良好 并且能够与 URL 建立连接 但在让应用程序运行几个小时后 Facebook 请求突然给了我以下错误 09 26 10 01 25 175 W System err 252 java net Unknow
  • 如何避免不相关的可为空警告(无需显式抑制)

    有没有办法让分析器理解变量Bar对于以下情况有值吗 nullable enable class Foo bool GenerateArray gt Bar HasValue int Bar get set void FooBar var d
  • 强参数和json输入rails 4

    我正在尝试通过 JSON 字符串保存数据 其中嵌套了关联属性 我不想使用 attr accessible 我几乎掌握了强参数的逻辑 但仍然遇到使它们工作的问题 我正在获取 JSON 字符串并使用它来保存数据 data request bod
  • Python Outlook:读取附加邮箱的收件箱

    我正在使用 Outlook 2010 并且有我的主邮箱 电子邮件受保护 我还在我的个人资料中添加了另一个邮箱 mb data proc 两者都显示为 Outlook 中的顶级文件夹 email protected Inbox Sent It
  • EXISTS 子查询中什么更容易阅读? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 It s a questi