多个 id 的更新语句

2024-02-07

我有 3 个表,我需要通过计算其他两个表的数据来更新第三个表的列。

update table3 set column3=
(
select t2.column3+t1.column3
from table2 t2 with (nolock) join table1 t1
on table2.id=t1.id
where table2.id= 100
)
where id= 100;

这个查询工作正常,它更新第三个表列,但是如果我提供像这样的 IN 运算符:

  update table3 set column3=
    (
    select t2.column3+t1.column3
    from table2 t2 with (nolock) join table1 t1
    on table2.id=t1.id
    where table2.id IN (100,101)
    )
    where id IN (100,101);

这失败了,我收到这条消息

子查询返回超过 1 个值。当子查询跟在 =、!=、、>= 后面或子查询用作表达式时,这是不允许的。 该语句已终止。

& 我知道这是因为子查询返回超过 1 行,我该如何处理这种情况?任何提示/想法都会有帮助。

如何更新多个 ID? IE。 ID 100 返回的选择查询值应根据第三个表中的 ID 100 进行更新,对于 ID 101 也是如此。

另外,我需要像这样进行求和 sum(t2.column3)- (t1.column3 + t1.column2)

 update table3 set column3=
        (
        select  sum(t2.column3)- (t1.column3 + t1.column2)
        from table2 t2 with (nolock) join table1 t1
        on table2.id=t1.id
        where table2.id IN (100,101)
        )
        where id IN (100,101);

这是因为您正在尝试设置column3返回的结果,SQL 期望该结果仅为一个值(标量)。当您向 SQL 引擎传递多个返回值时,SQL 引擎会感到困惑(它应该使用哪一个?...它不假设迭代结果)。因此,如果您想更新整个结果集,那么您需要根据查询创建一个子表并加入该子表。您的查询应该看起来更像这样

UPDATE Table3
SET Column3 = subtable.value
FROM Table3 
    JOIN (
        select t2.column3+t1.column3 as value, t1.id
        from table2 t2 with (nolock) join table1 t1
        on table2.id=t1.id
        where table2.id IN (100,101)
    ) AS subtable
    ON subtable.id = Table3.id
WHERE table3.id IN (100, 101)

在 table3.id 与其他 id 匹配的假设下,您也确实不需要内部where table2.id IN ...

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

多个 id 的更新语句 的相关文章

  • TOAD 将 &String 视为绑定变量

    我正在使用 Oracle Data Integrator 开发一些 ETL 有时会使用 TOAD 测试部分代码 今天我遇到了 TOAD 的问题 我有一行像 AND column value like DEV PROD 当我尝试运行包含上面过
  • sql查询将两列与一列连接起来

    我在 MS Access 2010 中有 2 个表 如下所示 USERS u id u name LOAN l id l from ref users u id l to ref users u id l amount Users u id
  • 如何在 sqlalchemy 中创建基于文字的查询?

    我创建了一个函数来创建表达式 def test operator1 operation operator2 return literal column operator1 op operation operator2 现在当我用 test
  • 使用 MS Access 获取行的第一个实例

    EDITED 我有这个查询 我想SELECT表中记录的第一个实例petTable SELECT id pet ID FIRST petName First Description FROM petTable GROUP BY pet ID
  • 根据表sql中的行替换字符串中的字符

    我需要用一些映射的字符替换字符串中的字符列表 我有一个表 dbo CharacterMappings 有 2 列 CharacterToFilter 和 ReplacementCharacter 假设这个表中有3条记录 Filter Rep
  • 将 SQL 数据中的一行映射到 Java 对象

    我有一个 Java 类 其实例字段 以及匹配的 setter 方法 与 SQL 数据库表的列名相匹配 我想优雅地从表中获取一行 到 ResultSet 中 并将其映射到此类的实例 例如 我有一个 Student 类 其中包含实例字段 FNA
  • 如何在Oracle中使用Timestamp_to_scn和Scn_to_timestamp?

    我的查询结果是这样的 select cast to date a start time mm dd yyyy hh mi ss pm as timestamp date of call ora rowscn from calling tab
  • 使用两个日期之间的随机日期时间更新每一行

    我有一个专栏叫date created我希望每一行保存一个随机日期 日期距当前时间为 2 天 我正在运行以下查询 但它会更新具有相同随机日期的所有行 我希望每一行都是随机的并且不相同 update table set date create
  • PHP 绑定“bigint”数据类型(MySQLi 准备好的语句)

    studentId 57004542323382 companyOfferId 7 sql INSERT INTO studentPlacement companyOfferId studentId VALUES if stmt db gt
  • 复选框上的数据绑定

    我目前正在将数据从 SQL 数据库之一提取到我的应用程序中 我可以让它适用于我的文本框和其他项目 但是 我似乎无法让它适用于复选框 这是我正在使用的代码 DataTable dt new DataTable dt using SqlConn
  • 查找 PostgreSQL 中所有范围集合的所有交集

    我正在寻找一种有效的方法来查找时间戳范围集之间的所有交集 它需要与 PostgreSQL 9 2 配合使用 假设这些范围代表一个人可以见面的时间 每个人都可以有一个或多个空闲时间范围 我想找到all可以召开会议的时间段 即所有人都有空的时间
  • 为什么这会返回资源 id #2? [复制]

    这个问题在这里已经有答案了 可能的重复 我如何从 PHP 中的 MySql 响应中 回显 资源 id 6 https stackoverflow com questions 4290108 how do i echo a resource
  • 快速转储 SQL Server 表

    我在 SQL Server 2008 R2 中有一个大表 它包含数十亿行 我需要在我们的应用程序中加载整个数据集 查询全表非常慢 我想使用 bcp 将其转储到文件中并加载它 但问题是字符串列包含各种特殊字符 如 t 0 逗号和 n 我找不到
  • 正则表达式 '?' 的类似物(前一项可选)在T-SQL中像什么?

    我想知道 是否可以翻译包含 的正则表达式 前面的项目可选 在 T SQL LIKE 模式中 DB 端无需任何操作 例如 31 4 我可以将其分成几个子句 但如果正则表达式包含很多 这不太方便 LIKE不使用正则表达式 并且它使用的模式语言没
  • Oracle:使用SQL或PL/SQL查找动态SQL中的错误位置

    如何在 PL SQL 或 SQL 中找到动态 SQL 语句中的错误位置 从 SQL Plus 中 我看到了错误的位置 例如 无效的 SQL DML 语句 SYS orcl gt SELECT 2 X 3 FROM 4 TABLEX 5 TA
  • 分层查询

    我希望我能够解释困扰我的问题 我有以下分层数据集 这只是 34K 记录的子集 PARENT ID CHILD ID EXAM TUDA12802 TUDA12982 N TUDA12982 TUDA12984 J TUDA12984 TUD
  • SQL 删除表并重新创建并保留数据

    在我们最初的设计中 我们搞砸了表中的外键约束 现在表已充满数据 我们无法在不删除表中所有记录的情况下更改它 我能想到的唯一解决方案是创建一个备份表并将所有记录放在那里 然后删除所有记录 更改表并开始将它们添加回来 还有其他 更好 的想法吗
  • 存储过程和权限 - EXECUTE 就足够了吗?

    我有一个 SQL Server 2008 数据库 其中对基础表的所有访问都是通过存储过程完成的 一些存储过程只是从表中选择记录 而其他存储过程则进行 UPDATE INSERT 和 DELETE 如果存储过程更新表 执行存储过程的用户是否也
  • sql server 按组排名

    问题看似简单 但我却无法理解 这是针对 sql 服务器的 what I have in a table What I need as a output cksum id cksum id 2162514679 204 2162514679
  • 使用 where 进行 select 语句时,HSQLDB 用户缺乏权限或未找到对象错误

    我的数据库使用 SQuirrel SQL 客户端版本 3 5 3 和 HSQLDB 我已经能够为其指定相应的驱动程序 内存中 并创建一个别名 我创建了一个表 CREATE TABLE ENTRY NAME VARCHAR 100 NOT N

随机推荐

  • GNU/Linux 下的 Boost.Log 链接错误

    我想测试 Boost Log 库 不幸的是 我收到链接错误 我使用 Arch Linux 并通过内置包管理器安装了 Boost 标头和库pacman 提升1 54 0 3 升压库 1 54 0 2 编译简单示例时官方网站 http boos
  • 多次捕获组

    最近我一直在玩Java中的正则表达式 我发现自己遇到了一个 理论上 很容易解决的问题 但我在想是否有更简单的方法来做到这一点 是的 是的 我很懒 问题是多次捕获一个组 这是 public static void main String ar
  • Javascript 返回错误的日期值 (NodeJS)

    我正在开发 NodeJS 项目 但得到了错误的日期值 我不明白我做错了什么 var d new Date results 1 timestamp console log results 1 timestamp 2016 05 10T13 2
  • 如何在SQL中计算IPv6 CIDR路由前缀?

    我一直致力于使用在 SQL Server 2012 实例上运行的 T SQL 从 IPv4 和 IPv6 地址范围生成 CIDR 一般来说 我们的应用程序 数据库外部 负责计算 CIDR 但我目前需要在数据库中进行 CIDR 计算 由于 I
  • 在 UITableView 中显示多个自定义单元格?

    我在 SnowLeopard 上使用 Xcode 4 2 我的项目正在使用故事板 我正在尝试实施一个UITableView具有 2 种不同的自定义细胞类型 sessionCelland infoCell 我可以让这两种类型出现在同一个列表中
  • AvalonDock 2 与 Caliburn Micro

    是否有关于将 AvalonDock 与 Caliburn Micro MVVM 结合使用的博客或文章 谷歌搜索时没有找到太多 http avalondock codeplex com http avalondock codeplex com
  • 在 Golang 中测试 HTTP 路由

    我正在使用 Gorilla mux 和 net http 包创建一些路由 如下所示 package routes some imports some stuff func AddQuestionRoutes r mux Router s r
  • 当耗尽 Kubernetes 集群中的节点时会发生什么?

    当您耗尽 Kubernetes 集群中的节点时 我想了解一些有关维护准备的说明 这是我在跑步时所知道的kubectl drain MY NODE 节点被封锁 Pod 正常关闭 您可以选择忽略 Daemonset pod 因为如果它们被关闭
  • 强大的javascript画布库[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 jQuery 解析不带引号的 JSON 数据

    我正在尝试使用通过 AJAX 从远程服务器获取的 jQuery 解析 JSON JSON 数据如下 identifier ID label LABEL 但无法 显然 字段标识符和标签没有双引号 当在我的本地测试站点上使用双引号进行测试时 它
  • C++11 const && 的绑定规则

    很多人不知道const右值引用是 C 11 语言的一部分 This http www codesynthesis com boris blog 2012 07 24 const rvalue references 博客文章讨论了它们 但在约
  • TFS Confluence 集成或替代方案

    我们可能会使用 Team Foundation Server TFS 但是 我发现它缺少 Confluence 管理需求文档的敏捷性 并且我认为 SharePoint 也没有那么好 我的问题是 是否可以将 TFS 与 Confluence
  • 防止幸运补丁/播放许可的方法[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我即将发布一个应用程序 但不希望它被盗版 有一些应用程序 例如 luckypatcher 即使您有许可 也可以为您破解该应用程序 有人
  • 我如何在android上设置相机防抖(图像稳定器)功能

    我制作了一个相机应用程序 我想添加防抖功能 但我找不到防抖 图像稳定器 的设置 请帮助我 通常图像稳定器是内置的相机功能 而OIS 光学图像稳定 是内置的hardware特征 到目前为止 很少有设备支持它们 如果设备没有内置功能 我认为您无
  • React 应用程序在部署后显示空白页面[重复]

    这个问题在这里已经有答案了 我之前在 GitHub 和 netlify 上创建并部署了单页 React 应用程序 它们都运行良好 问题在于使用react router的多页面应用程序 为了测试这一点 我尝试了几次不同的应用程序 一旦我实现了
  • 在特定日期重复 UILocalNotification

    我需要设置 UILocalNotification 我只需要从 DatePicker 获取小时和分钟 并且需要设置特定日期 比如 星期一 并每周一重复一次 我对此有两个问题 第一 是否可以在日期选择器的日期部分仅显示 日期名称 例如 星期日
  • JAX-RS (Resteasy 3.5.0.Final) + Wildfly 12 + Java 9 + maven = 404 未找到,但 JAX-RS (Resteasy 3.5.0.Final) + Wildfly 12 + Java 8 + ma

    我有一个简单的 Hello World 示例 JAX RS 项目 真的很简单又愚蠢 只是最小的配置 我打算在将来增强它 想象一下这样的事情 https robferguson org blog 2016 12 02 getting star
  • 在 django 中运行测试时设置 liveserver 端口

    我正在使用 django 作为 web 应用程序 并使用 docker 来部署它 我需要在带有硒的容器中测试它 我正在使用硒网格进行测试 为了与 docker 上的 liveserver 连接 我需要转发特定端口 但据我在 django 文
  • 添加特定 unicode 表情时 Discord.js message.react 失败

    昨天我开始使用discord js 的指南编写一个机器人 The core https github com discordjs guide tree master code samples command handling file se
  • 多个 id 的更新语句

    我有 3 个表 我需要通过计算其他两个表的数据来更新第三个表的列 update table3 set column3 select t2 column3 t1 column3 from table2 t2 with nolock join