更新多行而不循环

2024-04-21

我想在更新语句中一次更新多行而不使用循环。

我有下表,其中包含一些记录,如下所示:

Table:

create table test
(
col1 int,
col2 int,
col3 varchar(20),
col4 datetime,
name varchar(max)
);

插入:

insert into test values(111,999,'A101','2014-01-01','');
insert into test values(112,998,'A102','2014-01-02','');
insert into test values(113,997,'A103','2014-01-03','');
insert into test values(114,996,'A104','2014-01-04','');
insert into test values(111,999,'A101','2014-01-01','');
insert into test values(114,996,'A104','2014-01-04','');
insert into test values(115,995,'A105','2014-01-05','');
insert into test values(116,994,'A106','2014-01-06','');

现在我想更新特定日期的名称,例如如下所示:

Update nameD1 表示之间的日期2014-01-01 and 2014-01-02
Update nameD2 表示之间的日期2014-01-04 and 2014-01-06

预期结果表:

col1    col2    col3            col4             name
-------------------------------------------------------
111     999     A101    2014-01-01 00:00:00.000  D1
112     998     A102    2014-01-02 00:00:00.000  D1
113     997     A103    2014-01-03 00:00:00.000  
114     996     A104    2014-01-04 00:00:00.000  D2
111     999     A101    2014-01-01 00:00:00.000  D1
114     996     A104    2014-01-04 00:00:00.000  D2
115     995     A105    2014-01-05 00:00:00.000  D2

Note:如何在单个更新语句中将上述名称更新为特定日期而不循环。


我能想到的一种方法(也许不是最快的方法)是使用带有 CASE 语句的 UPDATE。

UPDATE  test
SET     name = CASE WHEN col4 BETWEEN '2014-01-01' AND '2014-01-02' THEN 'D1'
                    WHEN COL4 BETWEEN '2014-01-04' AND '2014-01-06' THEN 'D2'
                    ELSE name --Keeps que old value if doesn't match any case statement
               END

我在这里进行了测试,它完全按照您需要的方式工作。

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

更新多行而不循环 的相关文章

  • 从用户定义的函数调用 sql

    SQL Server 2008 是否可以从用户定义函数中的变量执行 sql 或者使用存储过程是唯一的解决方案 我有一条sql语句保存在variabele中 mySqlStatement select from someTable 我想从用户
  • SQL Server 中 SYSDATETIME 数据类型的准确性

    我已经在 SQL Server 2008 的存储过程中使用 SYSDATETIME 进行了一些测试 我设置了一个包含带有 IDENTITY 字段的 datetime2 7 的表 我了解这种数据类型的精度和准确度之间的差异 但是 在从此示例中
  • 触发器和行版本控制信息

    在什么情况下表触发器会导致在行末尾添加 14 个字节以进行行版本控制 数据行中使用的空间 部分在本页 http msdn microsoft com en us library ms175492 aspx明确指出 每个数据库行可以在行末尾使
  • 如何按月(“年”和“月”)对表进行分区并自动创建每月分区?

    我正在尝试按两者对表进行分区Year and Month 我将通过其进行分区的列是具有 ISO 格式 20150110 20150202 等 的日期时间类型列 例如 我有 2010 年 2011 年 2012 年的销售数据 我希望数据按年份
  • MS-sql 检索年龄最大的学生的成绩数据

    在此输入图像描述 https i stack imgur com mJ8aT png 在此输入图像描述 https i stack imgur com guYsU png 在此输入图像描述 https i stack imgur com 7
  • 警告:mysqli_stmt::bind_param():变量数量与准备好的语句中的参数数量不匹配[重复]

    这个问题在这里已经有答案了 我收到以下错误 Warning mysqli stmt bind param Number of variables doesn t match number of parameters in prepared
  • 我如何以编程方式从数据库表生成“插入”数据脚本文件?

    有没有一个优雅的基于面向对象的框架 这是我编写的一些代码 用于为数据库中的每个表生成 插入 存储过程 它还处理返回那些具有标识列的表的新 ID 它使用 SQL SMO 其中一些内容与我的项目有些特定 因此如果您有任何疑问 请告诉我 void
  • 如何用NULL替换空格

    我在 sql server 2012 中有一个包含空格的列 我想用 NULL 替换这些空白 我已经编写了以下查询 但它不起作用 SELECT replace COLUMN1 NULL FROM Orders 如何实现上述功能 提前致谢 Us
  • 修改SQL Server中的默认值

    我正在尝试使用 SQL Server 2008 中的 SQL 语句更改列的默认值 我在很多地方找到了如何在创建表 添加列时设置默认值 但没有找到如何设置它 一旦列已经存在就修改它 这就是我可以用来在添加时设置它的内容 ALTER TABLE
  • #DELETE 在 Access 中查看 SQL Server 表

    今天早上又出现了一个新问题 我的数据库驻留在 SQL Server 上 并使用 Access 作为前端 其中一个已经使用了至少 10 年的数据库今天突然停止工作 我发现这个问题影响了 2 个 可能更多 我没有检查所有 表 当我在访问中打开表
  • 使用不存在和联接的 SQL 查询到 LINQ 语法

    我的 SQL 查询如下所示 在 SQL 中运行良好 我需要将其转换为 LINQ 语法 SQL SELECT Key Id FROM LocalizationKeys AS lk WHERE NOT EXISTS SELECT 1 FROM
  • 为列名创建动态选择获取值 - 在 SQL Server 中

    请帮助我创建一个选择 SQL 语句 其中的结果列名称是从原始表中的列值获取的 表名是Device Part 用户可以输入很多DeviceCode其中有许多动态PartTypeName PartTypeName 值为PartInfo 这可能有
  • 如何从 SQL Server 的表中获取列名?

    我想查询一个表的所有列的名称 我发现如何做到这一点 Oracle https stackoverflow com q 452464 419956 MySQL https stackoverflow com q 193780 419956 P
  • 单个 sql 查询可以处理 sql server 中的 null 或值日期范围

    使用 SQL Server 2008 我有一个存储过程 其中开始日期和结束日期作为日期范围的输入参数 寻找一个singlesql 查询 其中在 where 子句中有一个开始日期和结束日期 可以处理日期均为空或都有值的两种情况 我不想使用 I
  • 如何在 SQL 中的时区中使用“America/New_York”

    我有这段代码在 SQL 中运行良好 但是我想使用不同的时区格式 例如 America New York 代替 US Eastern Standard Time SELECT TODATETIMEOFFSET CAST CURRENT TIM
  • SSIS ForEach File 循环 - 将文件名插入表

    我正在构建一个 SSIS 包 使用 VS 2017 来从特定文件夹加载一堆 CSV 文件 使用 ForEach File 循环效果很好 数据流任务具有平面文件源和 OLE DB 目标 我希望能够将文件名以及 CSV 文件中的数据保存在同一个
  • SQL查询多行变成单行

    有什么方法可以将通常返回具有相同值的多行的 SQL 查询更改为单行吗 例如 如果我现有的查询返回以下内容 ColA ColB 1 AA 1 BB 1 CC 2 AA 3 AA 我可以将查询更改为仅返回 3 行 并将 1 的第二个和第三个结果
  • 在分布式事务中手动登记后,使用 enlist=false 的连接不会关闭

    我有一个分布式事务上下文使用ServiceDomain 在其中 我打开一个 SQL 连接 其中连接字符串指定Enlist false 这样它就不是自动地被纳入交易 然后 如果我使用手动在分布式事务中登记连接EnlistDistributed
  • 如何跟踪数据库连接泄漏

    我们有一个应用程序似乎存在连接泄漏 SQL Server 表示已达到最大池大小 我独自一人在我的开发机器上 显然 只需导航应用程序 我就会触发此错误 SQL Server 活动监视器显示大量正在使用我的数据库的进程 我想查找哪些文件打开连接
  • 尝试使用 SQL 身份验证登录失败

    我正在尝试使用 sa 用户名及其密码连接到 SQL Server 2008 在 SQL Server 日志文件中我看到以下错误 用户 sa 登录失败 原因 尝试使用 SQL 登录 认证失败 服务器配置为 Windows 身份验证 仅有的 当

随机推荐

  • EF Code First 现有数据库

    首先使用 EF 4 1 代码我想停止 EF 从模型创建数据库 据我了解 如果您传递 Connectionstring 名称 它将使用该连接字符串中的现有数据库 但是 如果数据库不存在 那么它将创建数据库 将所有表形成模型
  • MYSQL DATE 函数在 LEFT JOIN 中运行速度极慢

    添加行时 LEFT JOIN core records sales as sales ON DATE appointments date DATE sales date sold 根据我的查询 它将脚本的运行时间从大约 8 秒增加到 2 3
  • 如何在manim中一个接一个地应用两个变换?

    我想申请两个线性变换矩阵一个接一个地在manimce 以下是一次转换的代码 from manim import class LT LinearTransformationScene def init self LinearTransform
  • 回调函数含义

    javascript中的回调函数是什么意思 JavaScript 的 回调 是函数对象 可以传递给其他函数 例如函数指针或委托函数 然后在函数完成时或需要时调用 例如 您可以有一个主函数 您可以向该函数传递一个它将调用的函数 主要功能可以如
  • Android Studio升级到Arctic Fox后出现奇怪的代码子窗口(2020.3.1)

    在 Android Studio 升级到 Arctic Fox 版本后 我的代码编辑器中现在出现了这些奇怪的子窗口 但我无法摆脱它们 如果我单击 2 个子窗口中的任何一个 顶部的单行窗口或下面的 5 行窗口 见下图 它会滚动到有问题的代码
  • Laravel 路由使用 nginx 覆盖 phpmyadmin 路径

    我的 LEMP Droplet 上有以下 nginx 配置 server listen 80 default server listen 80 default server ipv6only on root var www html pub
  • 在 C 中为 fgets 创建超时[重复]

    这个问题在这里已经有答案了 我的目的是创建一个 tfgets 函数 tfgets 与 fget 类似 只是它的超时时间为 1 秒 如果 1 秒内没有收到输入 则程序返回 NULL 否则 它将返回 fgets 返回的任何内容 如何为 tfge
  • Gson: [Class] 声明多个名为 [property] 的 JSON 字段

    我正在尝试使用以下 POJO 序列化为 JSONGson https github com google gson public class Member private long id private long customerAccou
  • Pytest 适用于旧的模拟,但不适用于 unittest.mock

    我正在将一些代码从 Python 2 移植到 3 并且py test玩得不好patch装饰器来自unittest mock 当我使用patch装饰器将模拟传递到测试函数的参数中 py test相反 将该参数解释为固定装置 并且无法设置测试
  • 如何在使用用户限制资源访问保护的 python eve api 中创建新用户帐户

    我首先使用 python eve 框架创建了一个 Web api 无需身份验证或用户帐户 效果非常好 我现在正在尝试添加身份验证和用户帐户 但遇到了一些困难 我想使用用户限制的资源访问 但是如果资源受到限制 用户如何创建新的用户帐户 我缺少
  • 如何从数据库中删除字段?

    当我单击该图标时 所单击的新闻字段将添加到数据库中 final fireStore FirebaseFirestore instance IconButton onPressed async newsController addNews a
  • 区分大小写的 SQL 区分大小写

    我正在尝试请求一个区分大小写的结果 例如在我的数据库中我有 ABCdef abcDEF abcdef 请求是 SELECT FROM table WHERE col abcdef 但我有 3 行结果 我只想要 abcdef 我尝试找到解决方
  • 如何获取 Kendo DropDownList 的选定值

    我不知道如何确定在我的剑道下拉列表中选择了哪个项目 我的观点将其模型定义为 model KendoApp Models SelectorViewModel ViewModel 定义为 public class SelectorViewMod
  • Postmessage 和 sendmessage 的替代方案

    我有一个程序 它使用多个线程来执行某些任务 每个线程都有一堆任务要执行 执行其中之一后 每个线程都会向主屏幕调用一条发布消息来更新日志 现在我有六万个任务 每个线程一万个 六个线程 执行每个任务线程后调用发布消息 但由于这些帖子消息 我的应
  • C# 数组还是字典?

    我想知道 C 数组的访问速度是否恒定 我需要在静态数组中存储 1000 个项目 这些项目将在服务器启动期间初始化 该数组将被只读使用 所以数组不会发生任何变化 我应该使用简单的 C 数组 new MyClass 还是字典 我对 C 非常陌生
  • 从 jQuery 中的标签获取值

    a href at privat class Privat Privat a 我需要一个 Jquery 来从上面的链接获取私有的 我在这里尝试过 Privat click function e e preventDefault alert
  • 为什么在尝试通过 pymongo 查询我的 mongodb 数据库时会得到 pymongo.cursor.Cursor?

    我在 mongodb 数据库中消费了一堆推文 我想使用 pymongo 查询这些推文 例如 我想查询 screen name 但是 当我尝试执行此操作时 python 不会返回推文 而是返回有关 pymongo cursor Cursor
  • 从 jquery 和 haml 渲染部分内容

    我计划执行的功能是根据从选择标记中选择的数字插入一些表单元素 我有一个名为 number of passengers 的选择标签 并且我计划为所选数量动态附加新的乘客字段 假设我从 number of passengers 中选择 2 个表
  • 使用 PHP 从

    我想获取里面的文字
  • 更新多行而不循环

    我想在更新语句中一次更新多行而不使用循环 我有下表 其中包含一些记录 如下所示 Table create table test col1 int col2 int col3 varchar 20 col4 datetime name var