【问题标题】:How do I update the duplicate values and their foreign key in the child table?如何更新子表中的重复值及其外键?
【发布时间】:2020-06-25 13:55:27
【问题描述】:

我有两张桌子

Table A
Table B

表 A 有 2 列

ID, CellNo

现在表 B 是 A 的 CHILD 表。

在表 B 中,我们有

ID, TableA_CellNO, TableA_ID.

我在表 A 和表 B 中有重复的 CellNo,这两条记录存在,但 TableA_ID 使用错误的 id 更新。

我需要针对重复的 CellNo 使用正确的值更新所有 TableA_ID。

我已经编写了一个查询来通过匹配两个表中的 CellNo 来更新,但这不起作用。

UPDATE TableA AS R 
   INNER JOIN TableB AS P 
       ON R.CellNo = P.TableA_CellNo 
SET P.TableA_ID = R.ID 

    

【问题讨论】:

  • 如果向我们展示您写的查询以便解决它,我们可能会看到您做错了什么。
  • 已更新代码。检查
  • 请阅读this,了解一些改进问题的技巧。

标签: sql sql-server tsql stored-procedures


【解决方案1】:

那里有语法错误。我想你正在寻找

UPDATE P
SET P.TableA_ID = R.ID
FROM TableA R 
JOIN TableB P ON R.CellNo = P.CellNo;
--WHERE <Some Conditions> if needed

【讨论】:

    【解决方案2】:

    我假设您要将表 A 的 Id 更新为表 B 的 最新 Id,这意味着插入 B 的最后一条 CellNo 记录是正确的。

    这可能不是最有效的,但应该可以。

    UPDATE a
    SET a.Id = b.Id
    FROM TableA a
        JOIN TableB b
            ON b.Id = a.Id
               AND b.Id =
               (
                   SELECT MAX(ib.Id) FROM TableB ib WHERE ib.CellNo = a.CellNo
               );
    

    【讨论】:

    • 您好,感谢您的回复。但这种情况并非如此。我在 TABLEA 中复制了具有不同 ID 的条目,但在 TableB 中,相同的条目 (CellNo) 具有相同的 ID。我想根据 TableA ids 更新他们的 ID
    • 您能否编辑您的帖子以包含表 A 和 B 的小数据样本?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-03
    • 1970-01-01
    • 2018-04-03
    • 1970-01-01
    • 2011-11-19
    相关资源
    最近更新 更多