在 DELETE 中使用 INNER JOIN

2023-12-29

我正在尝试以下条件:如果 Loans 表中的任何贷款的 OutstandingAmount

DELETE A, B, C, D, E
FROM Loans AS T1
INNER JOIN Payments T2 ON T1.LoanID = T2.LoanID
INNER JOIN Repayments T3 ON T1.LoanID = T3.LoanID
INNER JOIN Histories T4 ON T1.LoanID = T4.LoanID
INNER JOIN LoanRequests T5 ON T1.RequestDate = T5.RequestDate AND T1.BID = T5.BID
INNER JOIN Commits T6 ON T1.RequestDate = T6.requestDate AND T1.BID = T6.BID
WHERE T1.OutstandingAmount < 0

然而,这个命令在“DELETE A, B”处给了我语法错误,我什至不确定这是否有效。 任何帮助将不胜感激。谢谢。


正如 Gordon Linoff 在他的评论中所写,您只能在每个删除语句中从一个表中删除。

你基本上有两个选择:

  1. 在外键中使用删除级联(这可能是最好的 要做的事)

  2. 对每个表使用一个删除语句,但将整个删除过程包装在一个事务中。

将删除级联添加到外键意味着删除并重新创建它们:

ALTER TABLE dbo.Loans
DROP CONSTRAINT FK_Loans_Payments; 

ALTER TABLE dbo.Loans
ADD CONSTRAINT FK_Loans_Payments FOREIGN KEY (LoanID) REFERENCES Payments(LoanID) ON DELETE CASCADE; 

使用事务来包装单个删除语句:

BEGIN TRASACTION

BEGIN TRY

DELETE c
FROM Commits 
INNER JOIN Loans l ON l.RequestDate = c.RequestDate 
WHERE l.OutstandingAmount < 0

DELETE lr
FROM LoanRequests lr
INNER JOIN Loans l ON l.RequestDate = lr.RequestDate 
WHERE l.OutstandingAmount < 0

-- more of the same...

DELETE 
FROM Loans
WHERE OutstandingAmount < 0

COMMIT TRANSACTION

END TRY
BEGIN CATCH

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

在 DELETE 中使用 INNER JOIN 的相关文章

  • 执行计划中是否考虑了功能?

    当查询在 SELECT 或 WHERE 子句中包含 PL SQL 函数 用户定义函数 时 如何生成执行计划 它是否也计算这些函数的成本并将其显示在执行计划中 或者这些函数只是被忽略 在此先感谢您的帮助 用户生成的函数在 SELECT 或 W
  • 我应该在删除数据之前禁用聚集索引吗?

    我知道这已经像任何事情一样被讨论过 但找不到我可以接受的可靠答案 假设我有一个有100亿条记录的表 需要删除where子句中带有标识列的记录 我应该选择哪个选项 选项1 禁用索引 这将节省删除后重新排列索引的开销 但会花费更长的时间来搜索需
  • 在 SQL Server 2014 中使用带有事务的存储过程的 TransactionScope

    我正在使用 C 和 ADO NetTransactionScope在 ASP Net 应用程序中运行事务 该事务应该在多个表中保存一些数据 然后向订阅者发送电子邮件 Question 是否有效使用TransactionScope 当它包含对
  • 带可选参数的 SQL 更新命令?

    我将大约 500 000 个对象插入数据库 其中许多对象是相同的 在数据库中具有相同的主键表示 但其他字段可能不同 因此我使用方法 更新 如果没有行受影响 插入 问题是 有时一个对象的某些字段设置为 null 从文件中无法读取 并且已经在数
  • SQL查询3个表,无法得到所需的结果

    列出所有已售出的作品以及艺术家 订购日期和发货日期 SELECT title artist order date ship date FROM items orders orderline WHERE orders order id ord
  • mssql 的 UUID 疯狂

    我的数据库条目有一个 UUID 及其值 使用 Microsoft SQL Server Management Studio 提取 CDF86F27 AFF4 2E47 BABB 2F46B079E98B 将其加载到我的 Scala 应用程序
  • 查找缺失值

    我有一个表 有 2 个重要的列 DocEntry WebId 样本数据就像 DocEntry WebId 1 S001 2 S002 3 S003 4 S005 现在我们可以注意到 在 WebId 列中 S004 丢失了 我们如何通过查询找
  • 有向图 SQL

    我有以下数据集 它表示有向图中的节点 CREATE TABLE nodes NODE FROM VARCHAR2 10 NODE TO VARCHAR2 10 INSERT INTO nodes VALUES GT TG INSERT IN
  • SQL Server 2014执行计划创建需要很长时间(旧版本中很快)

    我在 SQL Server 2014 中遇到一个查询问题 第一次运行该查询时 需要很长时间才能生成执行计划 奇怪的是 它在 SQL Server 的所有早期版本 2012 2008 R2 2008 等 中都运行良好 它似乎与所涉及的表之一上
  • 排除任何字段中具有 NULL 值的行结果?

    我有一个像这样的简单选择 SELECT FROM table WHERE fk id 10020 它可以工作 但有一些字段为 NULL 没有模式所以做了 SELECT FROM table WHERE fk id 10020 AND NOT
  • 如何在 Windows 7 - 64 位中安装 IBM db2 ODBC 驱动程序?

    我需要从本地 SQL Server 2008 R2 连接到远程 DB2 我不想使用链接服务器 因此 我正在搜索下载并尝试安装 IBM DB2 驱动程序 因为主机集成服务器附带的用于 DB2 的 Microsoft ODBC 驱动程序非常昂贵
  • SQL Server到Mysql迁移(使用Mysql Workbench)数据传输错误

    我正在使用 Mysql Work bench 6 3 将数据库从 MS Sql server 2008 迁移到 Mysql 在 批量数据传输 期间出错并出现以下警告 这种情况仅发生在像 varchar char 这样的列类型上 当我尝试使用
  • 将表与同一个表的前一条记录连接起来

    我有一个包含历史记录的表 由主表中的多个触发器发布到那里 我想在历史表上创建一个 select 语句 其中每个记录都由其先前的记录 由相同的 LineID 和最高的 ActionDate 标识 连接 这样我就可以提取这两者之间的差异 我尝试
  • 在 JSP 中迭代列表对象

    我正在做一个项目来尝试自学 spring 和 struts 我目前卡在 JSP 页面上 我有一个 pojo 类 其中包含带有 getter setter 的变量 eid 和 ename 我还有一个 sql 中的表 其具有相同的值和六个填充行
  • 找出会话的默认 SQL Server 架构

    我需要知道正在执行某些 DDL 的 SQL 脚本中当前的默认架构是什么 我不需要设置架构 但我确实需要将对它的引用 名称或 ID 放入变量中 该脚本可能以 Windows 登录身份运行 因此以下内容还不够 SELECT name defau
  • 如何在 SQL Server 会话中设置自动提交?

    如何在 SQL Server 会话中设置自动提交 您可以通过将implicit transactions设置为OFF来打开自动提交 SET IMPLICIT TRANSACTIONS OFF 当设置为ON时 返回隐式事务模式 在隐式事务模式
  • 如何从表中选择层次结构中的最低级别

    我有一个具有父 子关系的表 Table A Column Id int Column Parent Id int Column Description text 一组示例数据如下 999 NULL Corp 998 999 Div1 997
  • 为什么实体框架 6 在插入后不只选择scope_identity()?

    当您使用 EF 6 1 保存实体时 将生成并执行以下 SQL 代码 exec sp executesql N INSERT dbo Customers Name FirstName VALUES 0 1 SELECT CustomerId
  • SQL Server:比较两个表中的列

    我最近完成了从某些应用程序的旧版本到当前版本的迁移 在迁移数据库时遇到了一些问题 我需要一个可以帮助我比较两个表中的列的查询 我的意思不是行中的数据 我需要比较列本身来弄清楚我错过了表结构的哪些变化 看一下红门 SQL 比较 http ww
  • 根据 SQL 查询的集合生成成员的“散点图”结果

    我有一个staff包含工作人员的数据库表 其中user no and user name列 我还有一个 department 包含员工可以加入的部门的表 其中dept no and dept name作为列 因为员工可以是多个部门的成员 所

随机推荐

  • 批处理文件从txt文件中删除前18个字符

    我有一个 txt 文档 其中包含超过 32 000 行带注释的机器代码 它看起来像这样 Display menu window C0 000E E220 SEP 20 C0 0010 C210 REP 10 C0 0012 20640B J
  • HostnameVerifier 接口的不安全实现 - Android

    Play 商店应用被拒绝的原因 您的应用程序正在使用 HostnameVerifier 接口的不安全实现 您可以在此找到有关如何解决该问题的更多信息Google 帮助中心文章 https support google com faqs an
  • grep 查找中间带有通配符的文本

    我想 grep 类似的东西 gt sh lt 但这不起作用 我可以 grep 一切 sh lt 但无法让通配符发挥作用 这里有什么技巧呢 你需要 grep 类似的东西 gt sh lt The 部分匹配任何长度的任何字符 部分匹配一个点
  • gwt 自定义小部件包装方法

    我的自定义小部件如下所示 public class CustomWidget extends Composite public static CustomWidget wrap com google gwt dom client Eleme
  • 如何将 Lua 函数传递给 C 函数并多次执行 Lua 函数?

    我想要做的是创建一个函数 它将迭代一些对象并为每个函数调用一个函数 我使用的是 BlitzMax 而不是 C 但这不是重点 因为它具有 Lua 的 C 函数的完整包装 Lua有一个lua pushcfunction 命令 但是lua pus
  • Python3 + Curses:如何按“q”立即结束程序?

    当我运行以下示例代码并按 q 时 它会正常结束 但是如果我按任何其他字符 例如许多中断和许多其他字符 然后按 q 它不会退出 我该如何解决这个问题 import curses time def main sc sc nodelay 1 wh
  • 如何检查变量是否是数组?...或类似数组的东西

    我想用一个foreach用一个变量循环 但这个变量可以有很多不同的类型 NULL例如 所以之前foreach我测试一下 if is array var foreach var as 但我意识到它也可以是一个实现的类Iterator界面 也许
  • 如何加载(或映射)文件部分最大大小,但适合 Windows 上的 RAM?

    有大文件 我需要快速排序 我将按适合 RAM 的部分处理文件 以避免 程度使用页面文件 下一步 合并部分 如何使用最大内存 我的解决方案 使用WinApi文件内存映射 但我不知道如何获取文件最大大小的一部分 但适合RAM 如何确定大小 Yo
  • Service-Fabric 绑定到多个端点

    是否可以绑定服务结构应用程序来侦听多个端口 基本上 我试图拥有一个面向公众的服务 它侦听 http 80 和 https 443 并将任何 http 请求重定向到 https 我创建了一个新的 ASP net Core 服务 它单独工作正常
  • F# 联合类型列表

    我想要一份报告清单 报告可以是详细信息或部分类型 module Data type Section Header string Lines string list Total string type Detail State string
  • jQuery 复选框

    我正在尝试编写一段 jQuery 代码 如果所有复选框都 未选中 则所有 li 标签的类都为 disabled 但是 如果选中一个复选框 任何复选框 则所有 li 标签都会失去 disabled 类别 非常感谢 checkbox click
  • 如何将字符串复制到剪贴板

    在xcode中如何将文本复制到剪贴板 目前 我正在使用以下代码 UIPasteboard pasteboard UIPasteboard generalPasteboard pasteboard setString shareString
  • 使用base64编码生成Oauth授权令牌

    我正在尝试按照指南为 YAHOO DSP API 生成 Oauth 身份验证令牌 Base64 编码是一种将二进制数据编码为文本的方法 以便可以轻松地在网络上传输而不会出现错误 在此步骤中 您将获取 YDN 控制台为您生成的客户端 ID 和
  • 是否可以将 AWS CodePipeline 与 Lightsail 结合使用?

    我工作了一整天却找不到答案 所以我问你们 是否可以将 AWS Pipeline 与 AWS Lightsail 结合使用 我的目标是将代码存储在 CodeCommit 中 并使用 CodeBuild CodeDeploy CodePipel
  • 龙卷风 ioloop 和龙卷风的工作流程是什么?

    我想了解tornado的内部工作流程 并且已经看到本文 http golubenco org p 16 这很棒 但我就是不明白 在ioloop py中 有这样一个函数 def add handler self fd handler even
  • Delphi 7 创建动画启动画面

    当我的应用程序加载他的数据库时 我试图制作一个动画闪屏 我已经创建了一个闪屏 但我想在数据库转换时使图像从左向右 移动 现在已经搜索了一段时间 但我所能找到的只是进度条 这是我的代码 SplashScreen TSplashScreen C
  • 如何关闭 Firefox 的缓存?

    在开发过程中 我必须始终 清除 Firefox 中的缓存 以使其使用最新版本的 JavaScript 文件 是否有某种设置 about config 可以完全关闭 JavaScript 文件的缓存 或者 如果不是 则适用于所有文件 在 Fi
  • 是否可以使用 GPU 来加速 Python 中的哈希?

    我最近读了 Jeff 的博客文章 标题为速度哈希 http www codinghorror com blog 2012 04 speed hashing html 其中他提到 您可以通过利用 GPU 的强大功能来非常快速地对事物进行哈希处
  • 模拟 Web.Config 中的标签

    我在用着impersonate标记在我的 Asp net 4 0 网站的 web config 中 下面是我的 Web Config 代码
  • 在 DELETE 中使用 INNER JOIN

    我正在尝试以下条件 如果 Loans 表中的任何贷款的 OutstandingAmount DELETE A B C D E FROM Loans AS T1 INNER JOIN Payments T2 ON T1 LoanID T2 L