2016-08-21 94 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