在 SQL 中使用 EXISTS 作为列

2024-02-18

是否可以使用的值EXISTS作为查询的一部分?

(请注意:不幸的是,由于客户端限制,我需要 SQLServer 2005 兼容的答案!)

因此,当返回一组结果时,其中一列是一个布尔值,它表明子查询是否会返回任何行。

例如,我想返回用户名列表以及不同的表是否包含每个用户的任何行。以下内容在语法上不正确,但希望能让您了解我的意思......

SELECT T1.[UserName],
    (EXISTS (SELECT * 
             FROM [AnotherTable] T2 
             WHERE T1.[UserName] = T2.[UserName])
    ) AS [RowsExist]
FROM [UserTable] T1

其中结果集包含名为的列[UserName]和布尔列称为[RowsExist].

显而易见的解决方案是使用CASE,如下所示,但我想知道是否有更好的方法......

SELECT T1.[UserName],
    (CASE (SELECT COUNT(*)
           FROM [AnotherTable] T2 
           WHERE T1.[UserName] = T2.[UserName]
          )
          WHEN 0 THEN CAST(0 AS BIT)
          ELSE CAST(1 AS BIT) END
    ) AS [RowsExist]
FROM [UserTable] T1

您的第二个查询语法无效。

SELECT T1.[UserName],
       CASE
         WHEN EXISTS (SELECT *
                      FROM   [AnotherTable] T2
                      WHERE  T1.[UserName] = T2.[UserName]) THEN CAST(1 AS BIT)
         ELSE CAST(0 AS BIT)
       END AS [RowsExist]
FROM   [UserTable] T1 

一般情况下没问题,将作为半连接实现。

文章CASE 表达式中的子查询 http://blogs.msdn.com/b/craigfr/archive/2006/08/23/715306.aspx进一步讨论这一点。

在某些情况下COUNT查询实际上可以执行得更好正如这里所讨论的 https://dba.stackexchange.com/questions/46359/check-existence-with-exists-outperform-count-not/46361#46361

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

在 SQL 中使用 EXISTS 作为列 的相关文章

  • 如何消除SQL中的NULL字段

    我正在为 SQL Server 2008 R2 开发 TSQL 查询 我正在尝试开发此查询来识别一条记录 客户 由于其中一些值为 NULL 因此我目前正在对大多数表执行 LEFT JOINS 但 LEFT JOIN 的问题是 现在我为某些客
  • 使用 Sql Server 表中的值的 C# 枚举

    目前我有一个 SQL Server 2005 表 看起来有点像 ID name desc 1 ONE Value One 3 THREE Value Three 5 FIVE Value Five 该表对应于 C 中的枚举 如下所示 enu
  • 为什么不能在 CONTAINS 语句中调用 ISNULL?

    假设我有这样的 SQL 查询 declare input varchar 20 select from myTable where CONTAINS myColumn ISNULL input replacement text 如果我尝试执
  • 如何获取位类型列的计数?

    我正在尝试使用SEDE https data stackexchange com 确定总共授予了多少个基于标签的徽章 我的典型策略是总结 select sum TagBased from Badges 不幸的是 自从TagBased是一个位
  • 如何通过T-SQL在SQL Server 2008中创建计划作业?

    我想创建一个作业 在一段时间过去后从数据库中删除记录 例如我在新闻表中有一个字段Time Stamp每个月都会有一个 SQL 查询像计划作业一样针对我的数据库运行 并删除时间戳为两个月前的新闻 一般来说 我想删除两个月前或更早的新闻 以免我
  • 如何在SqlCE中使用存储过程

    我刚刚安装了SQL Server 精简版 令我惊讶的是 我们不能在 sql server CE 中使用存储过程 我有 Sql Server CE 中存储过程的替代方案吗 我对存储过程非常着迷 我无法想象没有存储过程的应用程序 请帮忙 提前致
  • 在SQL Server 2012 TSQL中,使用XML RAW、XML AUTO和XML PATH有什么区别

    正如标题所示 欢迎所有开放的思想 我在我的电脑上测试了一下 输出似乎是一样的 例如 USE BOB DATABASE SELECT ID Name First Name Last Name FROM DBO T User FOR XML A
  • 在 SQL 中获取运行总计最大值的高性能方法

    我们有一个交易表 其结构如下 TranxID int PK and Identity field ItemID int TranxDate datetime TranxAmt money TranxAmt 可以是正数或负数 因此该字段 对于
  • Like子句和sql注入

    我对这种情况存有疑问 我在存储过程中有这样的查询 SELECT column1 column2 FROM table1 WHERE column1 like column1 我的问题是 这容易受到 SQL 注入攻击吗 我需要将其更改为这样的
  • varchar 变量的字符串比较失败

    我无法理解为什么会得到以下结果 declare myVar1 varchar Friday declare myVar2 varchar 10 Friday select case when myVar1 Friday then yes e
  • T-SQL 去除所有非字母和非数字字符

    有没有一种更聪明的方法来删除所有特殊字符 而不是使用一系列大约 15 个嵌套替换语句 以下代码有效 但仅处理三个字符 与号 空格和句点 select CustomerID CustomerName Replace Replace Repla
  • 我可以像处理表一样处理存储过程的结果吗?

    在sql server 2005中可以做这样的事情吗 WITH tmpTable AS EXEC spWhatever 或者我可以通过其他方式查询从 sp 返回的数据 谢谢 临时表 CREATE TABLE foo col1 int col
  • SQL - 是否有更好的方法将用于 where 子句的键列表传递到存储过程中?

    这是场景 我有一个清单客户ID 1 2 3 具有相关性OrderIds 我有一个存储过程Delete OrdersByCustomerIds 删除与该订单相关的所有订单客户ID指定的 目前 我这样做的方法是将客户ID转换为字符串 即 1 2
  • 了解 T-SQL 中的 PIVOT 函数

    我对 SQL 很陌生 我有一个这样的表 ID TeamID UserID ElementID PhaseID Effort 1 1 1 3 5 6 74 2 1 1 3 6 8 25 3 1 1 4 1 2 23 4 1 1 4 5 6 8
  • 如何在 SQL Server 中使用 RANK()

    我使用时遇到问题RANK https msdn microsoft com en us library ms176102 aspx在 SQL Server 中 这是我的代码 SELECT contendernum totals RANK O
  • SQL持续时间计算

    我有一张给定时间的历史公交车位置表 每秒记录一次 该架构如下所示 BusID int not null BreadcrumbID int not null identity 1 1 BusStopID int null Timestamp
  • 按日期顺序排列的 T-SQL 查询组(间隙和孤岛)

    我有一个这样的示例表 CREATE TABLE Aggregate vKey INT dKey INT StartTrip DATETIME EndTrip DATETIME Distance INT 像这样的一些样本数据 INSERT I
  • 计算 SQL Server 存储过程中删除的行数

    在 SQL Server 2005 中 有没有一种方法可以删除行并告知有多少行actually删除了 我可以做一个select count 条件相同 但我需要它完全值得信赖 我的第一个猜测是使用 ROWCOUNT变量 但尚未设置 例如 de
  • 将上一行值减去当前行

    我有下表 id value acc no 1 12 1 2 14 1 3 15 1 4 10 2 5 16 2 6 19 1 7 7 3 8 24 2 预期产出 id value acc no result 1 12 1 12 curren
  • 如何根据 XML 参数更新表

    我有一个表 我想根据 XML 参数中的值更新其 varchar 字段之一 我有下表 ID Constraint Value 1 OldVal 1 OldVal 2 2 OldVal 2 OldVal 1 我想使用以下 XML 来更新Cons

随机推荐

  • SQL Server - 条件语句的查询执行计划

    条件语句 例如如果别的 影响 SQL Server 2005 及更高版本 中的查询执行计划 条件语句是否会导致执行计划不佳 在考虑性能时是否需要警惕任何形式的条件 编辑添加 我特别指的是缓存的查询执行计划 例如 在下面的实例中缓存查询执行计
  • stringByAddingPercentEscapesUsingEncoding 转义的字符是什么?

    我不得不从 stringByAddingPercentEscapesUsingEncoding 切换到 CFURLCreateStringByAddingPercentEscapes 因为它不会转义问号 我很好奇它到底转义了什么 以及部分转
  • tee 和 script 本质上是等价的吗?

    在我想要捕捉的上下文中stdout文件中进程的一个 但仍希望在终端中显示此输出 我可以选择script and tee 在这种情况下 这些工具本质上是等效的 还是有一个 可能是微妙的 理由来选择其中一个而不是另一个 节目script and
  • 如何使用 MsBuild 创建可移植数据库?

    我想在我的解决方案中存储一个包含数据库创建脚本的项目 构建此项目时 它必须生成一个数据库文件 然后该数据库文件将在运行时供该解决方案的该项目和其他项目使用 怎么做 我知道我可以添加预构建任务 但我想知道 哪个命令行可以帮助我 也许 sqli
  • 使用 COM Interop 的 VB6 应用程序在 IDE 中工作正常,但编译后的 EXE 崩溃

    我目前正在开发一个 VB6 中的应用程序 该应用程序使用使用 NET 2 0 框架用 C 编写的 COM 互操作库 我使用 regasm exe 使用 codebase 开关从 NET dll 注册 tlb 文件 然后 我能够在 VB6 I
  • 如何在 Python 中为类型起别名?

    在某些 主要是函数式 语言中 您可以执行以下操作 type row list datum or type row datum 这样我们就可以构建这样的东西 type row datum type table row type databas
  • 为什么 Servlet 不是线程安全的? [复制]

    这个问题在这里已经有答案了 我需要知道为什么 servlet 不是线程安全的 Struts 2 0 框架控制器 servlet 是线程安全的原因是什么 我需要知道为什么 servlet 不是线程安全的 由于 Java 编程语言的多线程特性
  • 使用 adb 从损坏的 Android 设备中回收传感器

    我刚刚把我的s3弄坏了 三年前 它是最好的智能手机之一 Question如何通过 USB 获取手机惯性传感器的值 我想使用设备的加速度计 陀螺仪 磁力计 气压计和 GPS 传感器 假设我们想要得到 沿三个轴的原始加速度数据 我连接了 USB
  • Glassfish 5.0 java.lang.NoSuchMethodError

    当我尝试连接谷歌自定义搜索 api glassfish 时抛出 nosuchmethoderror 这就是代码 private int conn String search throws Exception String key mykey
  • HOG:对比度归一化步骤做了什么?

    根据HOG流程 如论文中所述用于人体检测的定向梯度直方图 参见下面的链接 对比归一化步骤是在分箱和加权投票之后完成的 我不明白 如果我已经计算了细胞的加权梯度 那么图像对比度的归一化现在对我有什么帮助 据我了解 对比度归一化是在原始图像上完
  • ggplot (geom_segment) 中的颜色

    使用facet grid时 如何根据数据中的因素对geom segments进行着色 我的方法失败了 因为颜色分配错误 这是一些数据 visual data data frame Values 10 1 Words c yeah what
  • 当我将 URL 添加到列表,然后使用 ajax 时,我尝试在某些 iframe 中显示列表的内容,页面会自行重新加载

    我正在构建一个仪表板 它的小工具是一些指向我想要在 iframe 内显示的不同页面的链接 我有一个按钮可以将新小工具添加到仪表板 添加新小工具后 我刷新仪表板 对于前 3 个小工具 应用程序没有任何问题 并且运行完美 但是 当我想添加第四个
  • 使用 bq 命令行实用程序运行保存的查询

    我有一个 BQ 脚本存储为 已保存的查询 我想知道是否可以使用 bq 命令行实用程序执行它 在文档中找不到相关内容 保存的查询 只能通过控制台访问 不能通过 API 访问 一种可能更适合您的方法是使用脚本和存储过程 https cloud
  • Git 中的致命错误:合并文件的多个阶段条目

    我正在从事我公司的一个生产项目 之前我创建了一个藏匿处并进行了一些更改 然后 当我尝试应用我的藏品时 它产生了冲突 我尝试通过单击每个文件中的 撤消 来重置 Visula Studio 中的所有更改 然后 当我尝试从 git bash 显示
  • 使用 @RequestBody List 的 Spring MVC REST 在语法上返回 HTTP 400

    我正在使用 Spring 4 Jackson 2 并在自定义类上使用 RequestBody 编写了一个功能齐全的 POST 方法 此方法在解组对象时没有任何问题 ResponseBody RequestMapping value stor
  • NSURLConnection、NSURLSession 和 AFNetworking 之间有什么区别? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我想知道它们之间的基本区别是什么 以及在 Objective c 和 swift 中管理 iOS 端 Web 服务的最佳和常见方法是什么 正
  • 如何在 Matlab 中将 PARFOR 与 Core i3 并行 4 工作

    我有适用于 Ubuntu 64 位的 Matlab R2012b 我有一个 Intel Core i3 CPU M 330 2 13GHz 4 我想用parfor同时并行化 4 个循环 因为 Intel Core i3 有 2 个核心和 4
  • Groovy SwingBuilder:更改面板颜色的按钮

    为什么这段代码会失败 我想更改动态构造的一系列多个面板中的一个面板的颜色 面板总数事先未知 由于某种原因 此代码在引用特定面板的名称 例如 panel2 时有效 但在我动态引用它 panelID 时则无效 import groovy swi
  • 如何从视频文件中获取图像

    你好 我是韩国的开发者 我有一些问题 所以我进入这个网站 InputStream is URL url new URL http 112 216 25 58 8888 VOD LAUNCHER media youtube sample3 m
  • 在 SQL 中使用 EXISTS 作为列

    是否可以使用的值EXISTS作为查询的一部分 请注意 不幸的是 由于客户端限制 我需要 SQLServer 2005 兼容的答案 因此 当返回一组结果时 其中一列是一个布尔值 它表明子查询是否会返回任何行 例如 我想返回用户名列表以及不同的