我需要将一些数据导出到 CSV 文件。为此,我发出一个SELECT命令,其中某一列设置为 0。之后,我必须将这些行设置为 1,以免再次导出它们。
面对这种情况的最佳方法是什么?我的意思是一些“交易”,其中我UPDATE选择了与我之前选择的完全相同的行。
是SELECT ... FOR UPDATE要走的路吗?
我需要将一些数据导出到 CSV 文件。为此,我发出一个SELECT命令,其中某一列设置为 0。之后,我必须将这些行设置为 1,以免再次导出它们。
面对这种情况的最佳方法是什么?我的意思是一些“交易”,其中我UPDATE选择了与我之前选择的完全相同的行。
是SELECT ... FOR UPDATE要走的路吗?
这是你想要的?
UPDATE table SET column = 1 WHERE(
SELECT column FROM table WHERE column = 0)
如果它对任何人都有帮助,我所做的就是在我的表中有一个 3 状态字段。
每次插入记录时,其初始状态为 0。
当我想导出新行时,事务内部会发生以下情况:
这个问题可能很老,但可能会帮助将来寻找相同事物的人。简单的回答NO!. MySQL 中无法同时选择和更新。尽管根据您的问题,您可以像这样制作存储过程
CREATE PROCEDURE `GetandUpdate` (IN IDSet VARCHAR(300)
BEGIN
select * from tbl_CSV where state = 0 and FIND_IN_SET(id, IDSet);
update tbl_CSV set state = 1 where state = 0 and FIND_IN_SET(id, IDSet);
END
其中 IDSet 可以是逗号分隔的字符串,例如3,14,8,1