Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从内部联接更新结果集中的行_Java_Mysql_Sql_Jdbc - Fatal编程技术网

Java 从内部联接更新结果集中的行

Java 从内部联接更新结果集中的行,java,mysql,sql,jdbc,Java,Mysql,Sql,Jdbc,我有表A和表B,它们都有相同的主键Col1 Table A Table B Col 1 | Col 2 | Col 3 Col 1 | Col 4 我想根据表A中相应行的信息更新表B中的行。如果要获得两个表上具有内部联接的结果集 从A.Col1=B.Col1上的内部联接B中选择A.Col1、A.Col2、A.Col3、B.Col4 我可以遍历这个结果集并更新表B中的Col4吗?也就是说,使用JDBC/ResultSet updateX。。。方法

我有表A和表B,它们都有相同的主键Col1

Table A Table B Col 1 | Col 2 | Col 3 Col 1 | Col 4 我想根据表A中相应行的信息更新表B中的行。如果要获得两个表上具有内部联接的结果集

从A.Col1=B.Col1上的内部联接B中选择A.Col1、A.Col2、A.Col3、B.Col4

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

我问这个问题的原因是,从结果集a join B更新表B似乎有点奇怪


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

您应该能够使用连接更新TableB:

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


您应该能够使用联接更新TableB:

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

这对我很有用:

UPDATE
    B
INNER JOIN
    A ON B.id=A.id 
SET
    B.value=A.value
这是一个框架,根据您的需要更新B的其他列。

这对我很有用:

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

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

我无意中发现了这一列,希望在其中转换一些数据并在表之间移动数据

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

首先在目标表中,创建转换所需字段的临时列 其次,使用简单的SQL更新从另一个表填充这些列 第三,使用一个可更新的结果集来执行您最初想要执行的转换 最后,删除临时列
我无意中发现了这样一个场景:我想转换一些数据并在表之间移动它们

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

首先在目标表中,创建转换所需字段的临时列 其次,使用简单的SQL更新从另一个表填充这些列 第三,使用一个可更新的结果集来执行您最初想要执行的转换 最后,删除临时列
您可以通过联接进行更新-但您希望更新值是什么?数据库供应商并不总是实现JDBC的某些功能。@SGEDES:Col3中有一个字符串需要与正则表达式匹配,根据匹配情况,更新Col4。@Paul Vargas:供应商是MySQL3,需要相同的问题。DBServer:MariaDB 5.5.38,JDBC:mysql-connector-java-5.1.31-bin.jar。所有两个表都有主键,结果集是从CallableStatement获取的,过程从两个表中选择数据。错误:结果集不可更新引用表没有主键。此结果集必须来自使用ResultSet.CONCUR_Updateable结果集类型创建的语句,查询必须仅选择一个表,不能使用函数,并且必须从该表中选择所有主键。有关详细信息,请参阅JDBC 2.1 API规范第5.6节。您可以通过连接进行更新-但您希望更新的值是什么?JDBC的某些功能并非总是由数据库供应商实现。@sgedes:Col3中有一个字符串需要与Regex匹配,具体取决于匹配情况,更新Col4.@Paul Vargas:供应商需要回答相同的问题。DBServer:MariaDB 5.5.38,JDBC:mysql-connector-java-5.1.31-bin.jar。所有两个表都有主键,结果集是从CallableStatement获取的,过程从两个表中选择数据。错误:结果集不可更新引用表没有主键。此结果集必须来自使用ResultSet.CONCUR_Updateable结果集类型创建的语句,查询必须仅选择一个表,不能使用函数,并且必须从该表中选择所有主键。有关更多详细信息,请参阅JDBC 2.1 API规范第5.6节。最有可能的问题是关于使用Java ResultSet的更新功能,在该功能中,您可以通过ResultSet进行更新,而无需自己发出查询—驱动程序为您执行此操作,或者数据库支持可更新的查询resultsets@MarkRotteveel啊,,ktm5124在我提供了答案之后添加了这一澄清。最有可能的问题是关于使用Java ResultSet的更新功能,您可以通过ResultSet进行更新,而无需自己发出查询,或者由驱动程序为您执行更新,或者数据库支持可更新resultsets@MarkRotteveel啊,,ktm5124在我提供答案后添加了此澄清