0

我需要将一些数据导出到 CSV 文件。为此,我发出一个SELECT命令,其中某一列设置为 0。之后,我必须将这些行设置为 1,以免再次导出它们。

面对这种情况的最佳方法是什么?我的意思是一些“交易”,其中我UPDATE选择了与我之前选择的完全相同的行。

SELECT ... FOR UPDATE要走的路吗?

4

3 回答 3

1

这是你想要的?

UPDATE table SET column = 1 WHERE(
SELECT column FROM table WHERE column = 0)
于 2012-12-07T13:08:36.273 回答
0

如果它对任何人都有帮助,我所做的就是在我的表中有一个 3 状态字段。

每次插入记录时,其初始状态为 0。

当我想导出新行时,事务内部会发生以下情况:

  • 状态为0(新)的设置为1(即将导出)
  • 选择状态为 1(即将导出)的行用于 csv 导出
  • 状态为 1(即将导出)的设置为 2(已导出)
于 2013-05-28T17:41:54.437 回答
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

于 2014-01-25T17:36:36.427 回答