2

我有表AB它们每个都有相同的主键(Col1)。

表 A 表 B
第 1 栏 | 第 2 栏 | 第 3 列 第 1 列 | 第四栏

我想B根据 table 中相应行的信息更新 table 中的行A。如果我要在两个表上获得一个带有内部连接的结果集,

select A.Col1, A.Col2, A.Col3, B.Col4 from A inner join B on A.Col1=B.Col1;

我可以遍历这个结果集并更新表 B 中的 Col4 吗?也就是说,使用 JDBC/ResultSet updateX(...) 方法?

我问的原因是,从结果集 A 连接 B 更新表 B 似乎有点奇怪。


澄清:不确定这是否重要,但我有兴趣通过 JDBC ResultSet 接口更新行,而不是直接的 MySQL 更新查询。感谢您的回复!

4

3 回答 3

2

您应该能够使用以下命令更新 TableB JOIN

UPDATE TableB B
    JOIN TableA A ON B.Col1=A.Col1
SET B.Col4 = 'Some Value'
WHERE A.Col2 REGEXP 'Some Regex'

不知道你想使用什么正则表达式,在什么场景下,以及你想将 Col4 更新到什么值,这会有点困难,但这应该非常接近。

于 2013-05-27T23:58:09.080 回答
2

这对我有用:

UPDATE
    B
INNER JOIN
    A ON B.id=A.id 
SET
    B.value=A.value

小提琴

这是一个骨架,根据需要更新B的其他列。

于 2013-05-28T00:01:10.610 回答
0

我偶然发现了这个,寻找我想转换一些数据并在表之间移动它的场景。

有一个两遍解决方法,但它涉及创建临时列。

  • 首先在目标表中,创建转换所需字段的临时列
  • 其次,使用简单的 SQL 更新从另一个表中填充这些列
  • 第三,使用可更新的结果集进行您最初想做的转换
  • 最后删除临时列
于 2016-04-17T19:58:39.070 回答