【发布时间】:2016-05-10 19:59:16
【问题描述】:
我正在使用 JOIN 执行 SQL UPDATE,但该 JOIN 可以匹配多个值。假设我们有以下表格:
Table_1 Table_2
col_a | col_b col_a | col_b
--------------- ---------------
1 | A 1 | X
2 | B 1 | Y
3 | C 3 | Z
然后我执行以下查询:
UPDATE
t1
SET
t1.col_b = t2.col_b
FROM
Table_1 t1
JOIN
Table_2 t2 ON t1.col_a = t2.col_a;
结果如下:
Table_1 Table_2
col_a | col_b col_a | col_b
--------------- ---------------
1 | X 1 | X
2 | B 1 | Y
3 | Z 3 | Z
我需要做的是用匹配的最后一个值更新Table_1;所以在这种情况下,我需要这个结果:
Table_1 Table_2
col_a | col_b col_a | col_b
--------------- ---------------
1 | Y 1 | X
2 | B 1 | Y
3 | Z 3 | Z
【问题讨论】:
-
你怎么知道哪个是最后一个值..在你的例子中(X 或 Y)?
-
如果 table_2 中没有更多列来区分记录,则无法执行任何操作。
X和Y值只是示例。在下一次更新中可以设置X值。在关系数据库中没有“第一行,第二列”之类的东西。 -
抱歉,最后一个值不够清楚。在我的特殊情况下,
col_b是一个日期时间值,我必须从Table_2分配最新的值。已经解决了。谢谢!
标签: sql sql-server join sql-update