【问题标题】:update table help更新表帮助
【发布时间】:2010-11-19 07:31:28
【问题描述】:

我有两个表:table_1 和 table_2

table_1                       table_2
field_1   field_2             field_3      field_4
1          a                  1             
2          b                  4
3          c                  3
4          d                  2

现在我需要使用更新进行查询,以便在 table_2 中我可以在 field_4 中有以下值:

table_2
field_3    Field_4
1              a
4              d
3              c
2              b

应该通过使用 table_1 的单个查询中的更新状态来获得,这样如果 table_2 的 field_3 有 1,那么 filed_4 的值应该等于 field_2,table_1 中的 field_1

【问题讨论】:

    标签: sql


    【解决方案1】:

    在 SQL Server 中,它将是:

    UPDATE table_2
     set field_4 = t1.field_2
     from table_2 t2
      inner join table_1 t1
       on t1.Field1 = t2.Field_3
    

    这假定 field_1 是主键(具有唯一值)。 table_1 中未找到的 table_2 中的任何内容都不会更新。将正确设置 table_2 中重复的 field_3 值。

    【讨论】:

    • 我没试过,但是在sql server中我觉得需要UPDATE t2
    • 不必如此,除非正在更新的表是自行连接的(从 X 内部连接 ​​X 更新 X),在这种情况下,它会变得有点太复杂,无法在评论框中讨论.
    • +1,我尝试了两种方法:UPDATE table_2UPDATE t2 都可以。当我在连接更新中使用别名时,我通常倾向于执行 UPDATE alias
    • thanx 但我需要尽快更新 ststement 而不使用 join plz 帮助
    • 没有意识到我们不能使用连接——但为什么不呢?子查询或嵌套查询呢?这个问题的真正限制是什么?
    【解决方案2】:

    是的,既然你给表格起了别名,我认为他是对的。正确答案是:

        UPDATE t2
           SET field_4 = t1.field_2
          FROM    table_2 t2
           INNER JOIN
              table_1 t1
           ON t1.Field1 = t2.Field_3
    

    【讨论】:

    • thanx 但我需要尽快更新 ststement 而不使用 join plz 帮助
    猜你喜欢
    • 1970-01-01
    • 2013-12-06
    • 2016-01-31
    • 1970-01-01
    • 2019-07-13
    • 2010-12-05
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多