【问题标题】:Update with join and temp table使用连接和临时表更新
【发布时间】:2021-05-12 12:53:36
【问题描述】:

我有一个名为hanpaka 的表,我想从临时表中更新cardNum,两者之间的连接是IDMember 和MemberId。但是像这样更新会导致多个 cardNum 不是正确的 MemberId 为什么?

UPDATE Knowledge4All..Hanpaka
SET CardNum = (c.CardNumber )
FROM #Temp2 c inner join Hanpaka h on IDMember = h.MemberId`

【问题讨论】:

  • 当您使用 update ... from ... 语法时,您应该更新别名,例如update h ... 否则我认为它可能会忽略加入。
  • 我非常怀疑以上内容可以很好地将Knowledge4All..HanpakaHanpaka 视为同一对象的两个实例;从而更新表中的每一行。另外,不要依赖.. 语法;限定您的架构。
  • @Larnu 关于.. 这是架构构建的方式,我想了解查询,正确更新它
  • 这不是“很好”,请正确定义您的架构...
  • 正如您已经被警告的那样 - 不要在没有充分理由的情况下使用三部分名称。

标签: sql sql-server tsql sql-update


【解决方案1】:

尝试使用update 中的别名:

UPDATE h
    SET CardNum = c.CardNumber
FROM #Temp2 c JOIN
     Hanpaka h 
     ON c.IDMember = h.MemberId;

SQL Server 确实允许在update 中重复该表。但是,它可能会感到困惑,并且您的查询可能是笛卡尔积。

【讨论】:

    猜你喜欢
    • 2011-09-02
    • 1970-01-01
    • 2022-10-05
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2016-07-25
    • 2010-11-21
    • 2021-06-07
    相关资源
    最近更新 更多