查询更新后被修改的行的ID

4
我希望在Java中获取由查询影响的行的主键列值。我正在使用MySql DB。假设查询如下:
update user set pincode = 390023 where area like '%ABC Road%'

然后在Java中,我想要更新每一行的id(每一行的主键)。可能可以通过Java中的Statement对象实现此目的。

2个回答

6

在更新行之前选择它们。使用select id from user where area like '%ABC Road%'

记得将这两个操作包含在事务中,以避免这两者之间的行更改。


由于更新后无法获取这些ID,因此无法像插入后使用Statement的getGeneratedKeys()方法一样获取它们。 - hemu
我非常确定你做不到。据我所知,Mysql只能返回最后插入的行ID。 - Łukasz W.
如果主列设置为自动增量,则可以在插入时获取ID。 - hemu

1
SELECT id FROM user WHERE area LIKE '%ABC Road%';

或者其他方式:

SET @ids = NULL;

UPDATE user
SET pincode = 390023
WHERE area LIKE '%ABC Road%'
      AND (SELECT @ids := CONCAT_WS(',', id, @ids));

SELECT @ids;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接