如何更新外键

2024-03-01

我有 2 张桌子;第一个表的设计如下:

Table 1:

    id_Doc_line_sheet (pk),Autonumber
    DocNo (text)
    lineNo (text)
    Sheet No (text)

字段组合(DocNo、lineNo、Sheet No)是索引且唯一的。

第二个表的设计如下:

Table 2:

  id_Doc_line_trans (pk), Autonumber
  id_Doc_line_sheet (fk),Number
  name

现在在 table1 中,对于字段 lineNo 我有带前导空格和不带前导空格的记录,如下所示:

  id_Doc_line_sheet            DocNo        lineNo      Sheet No    
  ------------------------------------------------------------------
  1001                         doc-0001    line-0001    1
  1002                         doc-0001     line-0001   1
  1003                         doc-0001    line-0001    2
  1004                         doc-0001     line-0001   2
  1005                         doc-0002    line-0002    1
  1006                         doc-0002     line-0002   1
  1007                         doc-0001    line-0005    1
  1008                         doc-0001     line-0005   1

我想删除这些带有前导空格的记录,但首先我想为每个唯一的(DocNo,lineNo,Sheetno)更新(id_Doc_line_sheet)以更正一个(没有前导空格)。 我的意思是如果 table2 如下所示:

    id_Doc_line_trans     id_Doc_line_sheet     name
    ---------------------------------------------------
     1                        1001              name01
     2                        1002              name02
     3                        1003              name03
     4                        1004              name04
     5                        1007              name07
     6                        1008              name08

我将 (id_Doc_line_sheet) 更新为如下所示:

id_Doc_line_trans     id_Doc_line_sheet     name
---------------------------------------------------
 1                     1001                name01
 2                     1001                name02
 3                     1003                name03
 4                     1003                name04
 5                     1007                name07
 6                     1007                name08

然后从第一个表中删除带有前导空格的记录。

请帮助我该怎么做?


根据我的理解,您似乎想更新table2基于sheet_no first id用过的。如果是这样,您可以使用以下方法:

解释

  1. 您需要获取第一条记录table1基于sheet_no using report cte
  2. 找到对应的sheet_no对于每一行table2
  3. 更新table2条目其中row_number =1

Query

;with report as(
   select row_number() over(partition by sheet_no order by id_doc_line_sheet) as [Row],id_doc_line_sheet,sheet_no
   from table1       
   where line_no not like ' %' -- here you can ensure that lin_no doesn't start with leading space
), combined as(
    select t2.id_doc_line_trans,
           t2.id_doc_line_sheet,
           t1.sheet_no
    from table2 t2
    inner join table1 t1 on t2.id_doc_line_sheet = t1.id_doc_line_sheet
)

update t set t.id_doc_line_sheet = r.id_doc_line_sheet
from report r 
inner join combined c on r.sheet_no = c.sheet_no
inner join table2 t on t.id_doc_line_trans = c.id_doc_line_trans
where r.[Row]=1

更新后的结果table2

    id_doc_line_trans   id_doc_line_sheet   name
    1   1001    name01
    2   1001    name02
    3   1003    name03
    4   1003    name04

然后您可以根据您的要求应用删除语句

这里有一个正在工作的demo http://rextester.com/FYUA14320

希望对你有帮助

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

如何更新外键 的相关文章

  • asp.net网格分页的SQL查询

    我在用iBatis and SQLServer 使用偏移量和限制进行分页查询的最佳方法是什么 也许我添加该列ROW NUMBER OVER ORDER BY Id AS RowNum 但这只会阻止简单查询的数据访问 在某些情况下 我使用选择
  • 字符串文字上的 SQL Server T-SQL N 前缀[重复]

    这个问题在这里已经有答案了 这可能是一个菜鸟问题 但我发现了一些 T SQL 查询示例来验证数据库大小SELECT and WHERE clause here http technet microsoft com en us library
  • 从 SQL Server 读取十进制值时出现溢出异常

    我想知道这是一个错误还是我做错了什么 我正在加载值SqlDataReader来自 SQL Server 2008 数据库 但在某些情况下 它无法将 SQL 值转换为 net 值 NET 4 0 我已将其追溯到一个测试用例 它演示了实际问题
  • 如何在 SqlDataReader.Read() 期间从死锁异常中恢复

    我的 NET 应用程序的事件日志显示 它在从 Sql Server 读取数据时偶尔会出现死锁 这种情况通常非常罕见 因为我们已经优化了查询以避免死锁 但有时仍然会发生 过去 我们在调用ExecuteReader函数在我们的SqlComman
  • 如何使用 django-pyodbc (ubuntu 16.04) 配置数据库设置 Django-MSSQL?

    我是 Django 新手 目前正在尝试使用另一个数据库来保存我的模型 即MS SQL 我的数据库部署在docker容器中 903876e64b67 microsoft mssql server linux bin sh c opt mssq
  • SQL Server 中的嵌套事务

    sql server 允许嵌套事务吗 如果是的话那么交易的优先级是什么 来自 SQL Server 上的 MSDN 文档 嵌套交易 http msdn microsoft com en us library ms189336 SQL 90
  • 批量插入不适用于 NULL 数据

    当我从 CSV 文件将批量数据插入到表中时 它不起作用 显示错误 第 2 行第 9 列的批量加载数据转换错误 类型不匹配或指定代码页的字符无效 csv 文件中的第 9 列值为空 我该如何处理这个问题 根据这些信息 我认为目标表的特定字段被定
  • 如何使用 SSIS 将多个 Access 数据库导入到 SQL Server

    我有一个文件夹 其中包含 300 多个 Access 数据库 由我无法控制的程序编写 它们都有相同的结构 只是一张表 我正在将数据导入到 SQL Server 2005 中的表中 使用导入向导效果很好 但它一次只能用于一个 Access 数
  • SQL Server Like 查询不区分大小写

    Query SELECT from Table 2 WHERE name like Joe Output 1 100 Joe 2 200 JOE 3 300 jOE 4 400 joe 为什么不区分大小写 Problem 查询不区分大小写
  • 合并sql中的列

    我正在使用 SQL Server 2017 有一个存储过程 其中我有一个带有连接的简单选择 例如 SELECT p legacyKey AS JobNumber p Name AS JobName G Label AS DesignStat
  • Spring Batch 死锁 - 无法增加身份;嵌套异常是 com.microsoft.sqlserver.jdbc.SQLServerException

    我们正在将 Spring Batch 应用程序从 Oracle DB 迁移到 Azure SQL Server 我在尝试执行时收到以下错误两个不同的工作同时更新不同的表 但使用相同的公共 BATCH 表 引起原因 org springfra
  • SQL Server 2012:有条件地增加计数器用户 ROW_NUMBER()

    我正在尝试申请ROW NUMBER 根据特定条件增加计数器 我的数据如下所示 目标计数器是Prep column id DSR PrepIndicator Prep 1662835 1 1 1 1662835 14 2 2 1662835
  • 如何进行数据透视并计算列平均值

    我承认这是迄今为止我必须面对的最复杂的 SQL 语句之一 我在这件事上碰壁了 我希望有人能帮我一把 我在数据库中有这张表 Item ActiveTime sec DateTime 1 10 2013 06 03 17 34 22 gt Mo
  • TSQL - 生成文字浮点值

    我理解比较浮点数时遇到的许多问题 并对它们在这种情况下的使用感到遗憾 但我不是表格作者 只有一个小障碍需要克服 有人决定使用浮点数 就像您期望使用 GUID 一样 我需要检索具有特定浮点值的所有记录 sp help MyTable Colu
  • 使用 MS Access 链接表连接到 SQL Server 后端时是否可能发生 SQL 注入

    我一直在对此进行一些研究 但到目前为止还是一片空白 情况是这样的 我正在开发一个链接到 SQL Server 后端的 MS Access 前端 我在某种程度上使用 Access 中的链接表 表单访问 SQL DB 这样 当用户更新表单中的值
  • 一个表可以有多个主键吗?

    我现在很困惑 也许你可以帮助我更好地理解这个问题 即一个表可以有两个主键 如果是 那么如何 如果没有 那为什么 您询问是否可以有多个主键field你当然可以 您只能有一个主键 但它可以包含唯一标识行所需的任意数量的列 创建表时使用类似这样的
  • 从字符串中删除某些字符

    我正在尝试删除某些字符 目前我的输出如下cityname district但我想删除cityname SELECT Ort FROM dbo tblOrtsteileGeo WHERE GKZ 06440004 Output B dinge
  • 在 C# 中执行基于存储过程的查询后,如何重新使用 CommandText 的 SqlCommand 对象?

    我有一个示例代码 aCommand CommandType CommandType StoredProcedure aCommand Parameters AddWithValue book id bookID aCommand Param
  • SQL Server 中高效的字符串后缀搜索?

    我想找到与谓词匹配的所有行MyColumn LIKE FooBar 但通过使用索引查找而不是扫描 一种方法本质上是创建 MyColumn 的反向版本并搜索反向模式 ooF 在该列上 在反向列上有一个常规索引 然而 我不喜欢手动创建这个反向列
  • SQL Server:为什么 ISO-8601 格式的日期依赖于语言?

    我需要一些帮助来理解 SQL Server 中的日期格式处理 如果您尝试以下操作 它将返回正确的结果 SET LANGUAGE English SELECT CAST 2013 08 15 AS DATETIME 2013 08 15 00

随机推荐

  • 带有片段的空白活动不在 Android Studio 中

    您好 我的问题是 当我想在 Android studio 中创建一个新项目并且我想选择带有片段的空白活动时 不是将活动添加到移动窗口 有什么解决方案可以帮助我修复它吗 进入下一页后即可找到它 只需选中 使用片段 框 然后单击 完成
  • Bootstrap Affix 更改列表项宽度

    我正在使用 Twitter Bootstrap 的后缀来附加当前包含导航列表的左栏 div class row div class span3 ul class nav nav list li class nav header Naviga
  • 专门为代表 Now 的 DateTime 制作一个包装器是个好主意吗?

    我最近注意到 为了模拟和测试目的 使用代表 现在 的 DateTime 作为方法的输入参数确实很好 而不是每个方法都调用DateTime UtcNow他们自己 我在上面的方法中执行一次 然后将其转发到下面的方法中 所以很多需要 现在 的方法
  • 我通过 Axios 来自 API 并使用 Vue 显示的数据未显示

    我刚刚开始学习 Vue Js 我试图从 API 中获取一些信息并将其显示在表格中 我真的看不出问题出在哪里 我彻底浏览了代码 但无法弄清楚问题出在哪里 下面是我写的代码 我很漂亮 这是一件小事 或者在当前版本的 Vue 中是否有新的方法来做
  • 在Qt中,QEvent意味着失去窗口焦点,重新获得窗口焦点? (设置透明度)

    当我的应用程序失去焦点时 我需要设置透明度 我还需要在重新获得焦点时重置透明度 通过鼠标单击或 alt tab 或其他方式 我知道如何设置透明度 所以这不是问题 设置窗口不透明度 0 75 问题是何时 我同意 K vin Renella 的
  • 从 SecureRandom 获取确定性值?

    出于基准测试的目的 我希望 SecureRandom 产生确定性的输出 这是否可以通过使用种子 或者算法的规范 来实现 import java security SecureRandom class TestSecureRandom pub
  • 在 Vite 中禁用预加载

    我正在将一个使用 Vue 2 和 Webpack 的大项目迁移到 Vue 3 和 Vite 到目前为止 一切看起来都很棒 但是当我们第一次尝试发布到生产环境时 我们注意到注入了许多模块预加载标签 并且其中的许多文件可能永远不会被使用 问题是
  • python lxml 与 py2exe

    我已经用 dom 生成了一个 XML 我想使用 lxml 来漂亮地打印 xml 这是我用于漂亮打印 xml 的代码 def prettify xml xml str import lxml etree as etree root etree
  • 使用 data.table 将 R 中的许多列乘以特定的其他列?

    我在 R 中有一个很大的 data table 其中有几个带有美元值的列 在另一列中 我有一个通货膨胀调整数字 我试图弄清楚如何用它乘以通货膨胀调整栏来更新我的每个货币栏 假设我有数据 DT lt data table id 1 1000
  • Playframework 2.1 找不到 javax.persistence 和 play.db

    我在使用 Play 框架 版本 2 1 创建实体的 Scala 教程中遇到问题 我正在尝试做 import java util import javax persistence import play db jpa 但是当我编译时 它告诉我
  • 更改 moreNavigationController 图标的颜色

    我已经成功地使用更改了导航栏色调 背景颜色和标签颜色this https stackoverflow com questions 438381 customizing the more menu on a tab bar 但是可以改变图标的
  • 检测 UITableView 部分标题何时捕捉到屏幕顶部

    我想检测何时UITableView节标题捕捉到屏幕顶部 然后修改标题的高度 但我不知道该怎么做 有人可以帮忙吗 我能够通过使用来完成检测哪个标题粘在表视图的顶部didEndDisplayingHeaderView and willDispl
  • 在jHtmlArea中添加表格

    有人知道使 jHtmlArea 支持表格内容并允许用户将表格 单元格 行添加到编辑器框的方法吗 它似乎不是该插件的标准功能 我希望我的用户能够在所见即所得编辑器中创建表 试试这个代码 只需将 editor 更改为您为文本区域设置的 id 即
  • 根据 OnKeyUp 中的文本框过滤列表框项目?

    我有一个包含大量项目的列表框 这些项目都是帐号 因此很难搜索 当用户在文本框中键入内容时 是否可以对项目进行 过滤 以便仅显示与迄今为止输入的内容相匹配的项目 e g List Box 2342 3434 2332 3224 然后用户在文本
  • R - ggplot2 直方图的阴影部分

    所以我有这个数据 dataset rbinom 1000 16 0 5 mean mean dataset sd sd dataset data subset subset dataset dataset gt mean 2 sd data
  • 错误:环境中未设置 XDG_RUNTIME_DIR。 Gtk-警告 **:无法打开显示:

    我曾经用 sublime 打开文本文件 对于只读文件 我曾经这样做 sudo sublime 但现在突然间sudo sublime命令给出以下错误 sublime 3931 Gtk WARNING cannot open display w
  • 无法调用类型缺少调用签名的表达式

    我有苹果和梨 两者都有isDecayed属性 interface Apple color string isDecayed boolean interface Pear weight number isDecayed boolean 这两种
  • 如何在闪亮的仪表板侧边栏中的 menuSubItem 下包含输入小部件?

    如何在闪亮应用程序的侧边栏中的 menuSubItem 下包含一个控件小部件 这是我的试验 library shiny library shinyWidgets library shinydashboard ui lt dashboardP
  • 使用 Ninject 将存储库注入自定义会员资格提供程序

    我正在尝试使用 MVC 3 中的 ninject 将存储库注入到自定义成员资格提供程序中 在 MembershipProvider 中我尝试了以下操作 Inject public ICustomerRepository customerRe
  • 如何更新外键

    我有 2 张桌子 第一个表的设计如下 Table 1 id Doc line sheet pk Autonumber DocNo text lineNo text Sheet No text 字段组合 DocNo lineNo Sheet