SQL 使用 CASE 语句更新列中的行

2024-02-12

我有两个表,用户和#TempTable(它是用户的子集)。我想更新 Users 表中的 IsActive 列。如果 #TempTable 中的用户也在 Users 表中,我想设置 IsActive = 1,否则设置 IsActive = 0。

从不在 #TempTable 中的用户获取用户(对于这些用户,IsActive 应设置为 0):

-- (Users \ #TempTable) U (#TempTable \ Users)
SELECT  u.UserName
FROM    Users u 
WHERE   (u.UserName) NOT IN 
    (SELECT t.[User Name] FROM #TempTable t) 
UNION ALL 
SELECT  t.[User Name] 
FROM    #TempTable t
WHERE   (t.[User Name]) NOT IN 
    (SELECT u.UserName FROM Users u)

我们称之为结果集。我希望对我的更新声明有所帮助。我希望能够做的是:

UPDATE Users
SET IsActive = (CASE WHEN User.UserName IN ResultSet THEN 0 ELSE 1 END) 

无需为每个 User.UserName 写出 CASE WHEN。提前致谢!


您可以在 UPDATE 语句中使用联接。

UPDATE Users
SET Users.Active = CASE WHEN T.UserName is null THEN 0 ELSE 1 END 
FROM Users AS U
LEFT JOIN #TempTable AS T ON U.UserName = T.UserName

Notes :

  • 您也可以使用子查询,但这会慢得多(n 平方的顺序而不是 n 的顺序)。对于少数用户来说,这并不重要。

  • 没有测试,因此上面的代码中可能存在拼写错误/错误


基于关于这行不通的疯狂评论,我实现了一个小提琴。

享受工作的乐趣:

http://sqlfiddle.com/#!6/25235/3 http://sqlfiddle.com/#!6/25235/3

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

SQL 使用 CASE 语句更新列中的行 的相关文章

  • SQL Server 2012:有条件地增加计数器用户 ROW_NUMBER()

    我正在尝试申请ROW NUMBER 根据特定条件增加计数器 我的数据如下所示 目标计数器是Prep column id DSR PrepIndicator Prep 1662835 1 1 1 1662835 14 2 2 1662835
  • 如何使用 SQL 通过表示多级订单的 varchar 字段正确排序?

    我不太喜欢数据库 我发现在查询上出现以下问题SQL服务器数据库旧的遗留应用程序的 我声明不幸的是我无法更改数据库结构 字段类型 这非常难看 我有以下情况 SELECT Sottocategoria IdSottocategoria IdCa
  • 将 MSSQL 中用于 Web 制图的投影(Leaflet、Openlayer、OpenStreetMaps、GoogleAPI...)更改为 WSG48 或任何其他格式

    我在 MSSQL 服务器中有一些像这样的 WKT WKB 数据 并希望借助 leaflet Openlayer OpenStreetMaps 或 GoogleAPI 将它们显示在地图上 我的数据如下所示 POLYGON 1736946 09
  • 如何引用下一行的数据?

    我正在 PostgreSQL 9 2 中编写一个函数 对于股票价格和日期的表 我想计算每个条目较前一天的百分比变化 对于最早一天的数据 不会有前一天 因此该条目可以简单地为 Nil 我知道WITH声明可能不应该高于IF陈述 到目前为止 这就
  • Spring Data JPA 选择不同

    我有一个情况 我需要建立一个select distinct a address from Person a 其中地址是 Person 内的地址实体 类型的查询 我正在使用规范动态构建我的 where 子句并使用findAll Specifi
  • 使用 MS Access 链接表连接到 SQL Server 后端时是否可能发生 SQL 注入

    我一直在对此进行一些研究 但到目前为止还是一片空白 情况是这样的 我正在开发一个链接到 SQL Server 后端的 MS Access 前端 我在某种程度上使用 Access 中的链接表 表单访问 SQL DB 这样 当用户更新表单中的值
  • hive sql查找最新记录

    该表是 create table test id string name string age string modified string 像这样的数据 id name age modifed 1 a 10 2011 11 11 11 1
  • 没有为 1 个或多个必需参数给出值。更新SQL

    我正在编写一个程序 当用户在列表视图上选择记录时 该程序会更新密码或积分 我收到错误 没有为 1 个或多个必需参数给出值 我不知道如何纠正 我是否遗漏了一些明显的东西 Dim sql As String UPDATE Users SET P
  • 根据由另一列分组的不同列的最大值获取值[重复]

    这个问题在这里已经有答案了 我想根据由另一列分组的不同列的最大值来获取列的值 我有这张表 KEY NUM VAL A 1 AB B 1 CD B 2 EF C 2 GH C 3 HI D 1 JK D 3 LM 并想要这样的结果 KEY V
  • 如何编写SSIS switch/case 表达式?

    这是一个 SQL Server Integration Services SSIS 表达式问题 我对此还很陌生 我想在派生列转换中编写一个 switch case 表达式 基本上 新列可以根据输入列的值有 5 个不同的可能值 我从谷歌得到的
  • Snowflake 中的动态 SQL

    当我在雪花中运行动态 SQL 时 遇到以下错误 未完成对 SQL MAIN 的分配 因为值超出了变量的大小限制 它的大小是263 限制为 256 内部存储大小以字节为单位 这是代码 SET v G 1 SET v G1 v G VARCHA
  • postgresql:插入...(选择*...)

    我不确定它是否是标准 SQL INSERT INTO tblA SELECT id time FROM tblB WHERE time gt 1000 我正在寻找的是 如果 tblA 和 tblB 位于不同的数据库服务器中怎么办 Postg
  • Java、Oracle 中索引处缺少 IN 或 OUT 参数:: 1 错误

    您好 我使用 Netbeans 8 0 2 和 Oracle 11g Express Edition 在 JSF 2 2 中编写了一个图书馆管理系统 我有几个名为 书籍 借阅者 等的页面 以及数据库中一些名为相同名称的表 我的问题是这样的
  • Oracle SQL 函数中可以有 commit 语句吗

    在 SQL 函数中使用 COMMIT 语句是否可能 有意义 从技术上来说 答案是肯定的 你can请执行下列操作 create or replace function committest return number as begin upd
  • SQL - 需要查找重复记录但排除反向事务

    我有一张交易表 偶尔会有 重复条目 如果 当管理员发现这些重复条目时 他们将撤销交易 从而创建负值 但由于监管要求 原始重复条目仍然保留 我想创建一个 SQL 查询 并使用 Crystal Reports 来制作报告 以便管理员轻松查找重复
  • 在数据库中搜索时忽略空文本框

    此代码能够搜索数据并将其加载到DataGridView基于搜索表单文本框中提供的值 如果我将任何文本框留空 则不会有搜索结果 因为 SQL 查询是用 AND 组合的 如何在搜索 从 SQL 查询或 C 代码 时忽略空文本框 private
  • 使用存储过程中的 Select 查询将单个变量分配给多行

    我的查询是使用 Select 将单个变量分配给多行 存储过程中的查询 例如 我从 Employee 表中获取 10 个 比如 1 到 10 个员工 ID 声明 id int select id EmpId from Employee sel
  • 更改mysql数据库表中的日期格式

    大家早上好 只是一个简单的问题 在我现有的 MySql 数据库中 我几乎没有包含日期 的列 目前这些是年 月 日格式 但现在我需要将其全部更改为年 月 日格式 我试过了select date format curdate d m Y 但它不
  • Oracle:按月分区表

    我的解决方案 德语几个月 PARTITION BY LIST to char GEBURTSDATUM Month PARTITION p1 VALUES JANUAR PARTITION p2 VALUES Februar PARTITI
  • 在Oracle中使用IW和MM

    我使用 IW 表示每周结果 使用 MM 表示每月结果 但我总是收到错误 ORA 00979 not a GROUP BY expression 00979 00000 not a GROUP BY expression 我的疑问是这些 We

随机推荐

  • 带有绿色复选标记的控制台消息 JavaScript

    我想知道控制台中是否有可能有一个绿色复选标记 就像 console warn 有黄色警告标志 console error 有红色错误标志一样 我在网上搜索过是否有类似的功能 但没有找到 现在我正在寻找一种方法将图标放在console log
  • 为什么在计时器回调中调用事件会导致以下代码被忽略?

    我正在编写一个简单的游戏 使用来自system threading命名空间来模拟操作的等待时间 我的目标是让计时器每秒执行一次 持续 x 秒 为了实现这一点 我在计时器回调中添加了一个计数器 问题是我在调用后放置的任何代码DeliveryP
  • 从 testNG 测试中检索 @Test 描述

    我的 testNG 测试有以下格式 Test alwaysRun true dependsOnMethods testStep 1 description Enter the names and verify that they are a
  • 如何在不循环的情况下一次为多个数组索引赋值?

    如何在 C 中为数组的多个元素设置一个值 Example 我有一个数组初始化如下 int array new int 2 3 5 3 7 2 9 我想将第二个和第五个索引之间的值设置为 8 怎样才能做到呢 好吧 如果你想变得可爱 你可以创建
  • Python 中内置最大堆 API

    默认 heapq 是最小队列实现 想知道是否有最大队列的选项 谢谢 我尝试使用 heapify max 作为最大堆的解决方案 但如何动态处理推送 弹出元素 看来 heapify max 只能在初始化时使用 import heapq def
  • C# 计算两个纬度/经度点之间沿大圆路径的 n 个点数

    我正在将具有纬度和经度值的机场之间的飞行路径绘制到 Google 地图 API v3 上 然而 与 v2 不同的是 v3 似乎没有选项可以在地图上两点之间放置折线并将其显示为大圆飞行路径 所以我的想法是 也许可以计算两个纬度 经度点之间的大
  • 如何将 Perl 嵌入到 C++ 应用程序中?

    我想从我的 C 程序中调用 Perl 脚本文件 我不确定我将分发给的人是否会安装 Perl 基本上 我正在寻找一个可以使用的 lib 文件 该文件具有类似 Apache 的分发许可证 您可以将 Perl 嵌入到您的应用程序中 Perl 嵌入
  • C++ 具有频繁变化概率的离散分布采样

    问题 我需要从由某些权重构成的离散分布中进行采样 例如 w1 w2 w3 因此概率分布为 p1 p2 p3 其中 pi wi w1 w2 有些wi变化非常频繁 但只占所有wi的比例非常低 但分布本身每次发生时都必须重新规范化 因此我相信 A
  • 如何像facebook的照片查看器一样修改历史记录?

    我的网站上有一个弹出模式 类似于 Facebook 的照片查看器 当模式打开时 它显示来自另一个页面的内容 我想更改地址栏值和历史记录以显示这一点 模式中有一个下拉菜单 可以将模式中的内容更改为不同页面的内容 当发生这种情况时 我再次想要更
  • MassTransit/RabbitMq 错误队列 - 如何删除消息?

    我有一个队列 QueueName 我定义了消费者和错误消息消费者如下 cfg ReceiveEndpoint queueName QueueName e gt e UseMessageRetry r gt r Immediate 2 e A
  • 如何选择 mysql 中最新的条目?

    我想从表中选择最新的条目 看看该条目是否与用户尝试输入的条目完全相同 如何执行查询 从最近的 发布 条目中选择 query Select FROM confused here SELECT FROM posting ORDER BY dat
  • 显示对话框片段时未调用 AndroiddispatchKeyEvent

    当我的对话框片段是hide dispatchKeyEvent工作得很好 Override public boolean dispatchKeyEvent KeyEvent event Toast makeText FragmentPlaye
  • 如何在reactjs中管理树组件中的状态

    我已经为此苦苦挣扎了几天 试图找出 反应 的方式来做到这一点 基本上 我有一棵树 一个可以任意嵌套的列表列表 列表 我想要一个能够显示它并启用重新排列的组件 这是我的数据 var data id 1 id 2 children id 3 c
  • WooCommerce REST API - 获取订单的自定义字段

    我正在使用 WooCommerce REST API http woocommerce github io woocommerce rest api docs introduction http woocommerce github io
  • 如何使用rvm升级ruby on Rails应用程序的ruby版本

    如何使用 rvm 安全地升级我的 ruby on Rails 应用程序以使用新的 ruby 版本 假设您的应用程序是 my app 并且您正在使用 ruby 版本 a b c 并且想要转到 ruby 版本 x y z Step 0 开始之前
  • Itunes Connect 将桌面显示为 iPad 应用程序的平台

    今天我注意到 iTunes Connect 销售和趋势部分有了新皮肤和一些新功能 但是我公司的应用程序 仅适用于 iPad iPhone 似乎可以在桌面上下载 有谁知道 桌面 对于 iOS 应用程序意味着什么 它适用于 Mac 应用商店应用
  • Android:GraphView 如何在 X 轴上实现时间?

    我发现很难弄清楚如何在 Android 中的图表的 X 轴上实现时间 这是我的代码 for int i 0 i lt listSize i String onlyReading mData get i getReading split re
  • gem 和插件有什么区别?

    我是 Rails 新手 对 gems 和插件的概念感到困惑 谁能为我解释一下吗 插件只是从特定目录加载的库 gems 通过加载Bundler http gembundler com or RubyGems http rubygems org
  • WCF - 设计参数决策

    我正在为基金管理设计一项服务 基金管理服务有一个名为 UpdateFundApprovalDate FundDTO 基金 的操作 此操作将使用fundingID 的批准日期更新资金表记录 该服务将由 FundManagementUI 客户端
  • SQL 使用 CASE 语句更新列中的行

    我有两个表 用户和 TempTable 它是用户的子集 我想更新 Users 表中的 IsActive 列 如果 TempTable 中的用户也在 Users 表中 我想设置 IsActive 1 否则设置 IsActive 0 从不在 T