【问题标题】:How to update Table 1 from Table 2 when they have nothing in common?当它们没有共同点时,如何从表 2 更新表 1?
【发布时间】:2019-10-02 17:59:59
【问题描述】:

我有 2 张桌子 - 每张桌子只有一行。我想用 Table2 中的相应列更新 Table1 上的 o1 和 o2 列。

create table Table1(c1 int, c2 int, o1 int, o2 int)
create table Table2(o1 int, o2 int)

我有以下,这很可怕(但有效)。

update Table1
set o1 = (select o1 from Table2),
    o2 = (select o2 from Table2)

有没有更好的办法?

【问题讨论】:

  • 其实这是规范的做法。

标签: sql sql-server sql-server-2017


【解决方案1】:

你可以使用:

update table1
    set o1 = t2.o1,
        o2 = t2.o2
from table2 t2;

【讨论】:

  • 如果 Table3 的列 o3 - 我也想更新怎么办?我会在 from 语句中同时列出 table2 和 table3 吗? (无法完成这项工作)。
  • 您的意思是set 而不是where?也许是我不熟悉的语法。
  • @avery_larry 。 . .谢谢。
【解决方案2】:

通过这种方式,您可以按预期进行,即使有 1 或 'n' 行-

UPDATE T1
SET T1.o1 = T2.o1,
    T1.o2 = T2.o2
from table1 T1 INNER JOIN table2 T2 ON T1.o1=T2.o1 AND T1.o2=T2.o2;

【讨论】:

    猜你喜欢
    • 2015-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-14
    • 2019-07-06
    相关资源
    最近更新 更多