java resultset executeUpdate返回行数?

时间:2017-03-20 08:53:18

标签: java mysql

在MySQL上用Java做一些编程。

我有一个类似

的声明

insert into table1 (col1, col2, col3) select col1, col2, col3 from table2 where col4 is null on duplicate key update col2 = values(col2), col3 = values(col3)

table1和table2都将col1作为唯一

当我将它放入Statement.executeUpdate(SQL)时,它返回23000ish整数,但是当我只执行select * from table2 where col4 is null时,它只返回大约10500行。

我的问题,根据java Doc,似乎java.sql.Statement.executeUpdate(String sql)的工作原理如下

  

返回:(1)SQL数据操作语言的行数   (DML)语句或(2)0表示不返回任何内容的SQL语句

我没有更新行数?或者它是否会返回其他内容,例如它转化为自身的实际数量?

UPDATE ::

稍微扩展我的问题。

完整的陈述实际上是这样做的

insert into table1 (col1, col2, col3) select table1.col1, table2.col2, table2.col3 from table1 inner join table2 on table1.col1 = table2.col1 where table1.col4 is null on duplicate key update col2 = values(col2), col3 = values(col3)

由于表1的内连接,每行应该是更新,不应该执行插入,我试图从Oracle 11g重新创建MERGE函数。

但我的问题仍然存在,是executeUpdate方法返回其他内容而不是更新的行数吗?

0 个答案:

没有答案