2016-08-21 92 views
-1

如何在mysql中选择更新记录的ID;在mysql中选择更新记录

有没有办法做这样的事情

select Id from (update tblA set col1=false where col2 > 5) 
+2

除非您通过一些样本输入和预期输出解释您的需求,否则它仍然不清楚。 – 1000111

+0

怎么样:'select * from tblA where col2> 5'? –

+0

我想更新,然后选择更新记录的ID –

回答

0

你不能,你必须在更新之前将其选中。

如果您的表使用InnoDB存储引擎,请使用SELECT FOR UPDATE锁定选定行并防止其他客户端插入,更新或删除选定行。

START TRANSACTION; 
SELECT id FROM tblA WHERE col2 > 5 FOR UPDATE; 
UPDATE tblA SET col1 = false WHERE col2 > 5; 
COMMIT; 

另一种替代方法是将某些列设置为客户端唯一的值(例如进程ID)以及使用该值进行选择时的值。 但它需要一个额外的列。

UPDATE tblA SET col1 = false, process_id = 12345 WHERE col2 > 5 AND process_id IS NULL; 
SELECT id FROM tblA WHERE process_id = 12345