我需要将一些数据导出到CSV文件。为此,我发出SELECT
命令,将某些列设置为0,然后将这些行设置为1,以便不再导出它们。
面对这种情况的最佳方法是什么?我指的是一些“交易”,其中UPDATE
与我之前选择的行完全相同。
SELECT ... FOR UPDATE
可以走了吗?
答案 0 :(得分:1)
这是你在找什么?
UPDATE table SET column = 1 WHERE(
SELECT column FROM table WHERE column = 0)
答案 1 :(得分:0)
如果它对任何人都有帮助,我所做的就是在我的桌子上有一个3状态字段。
每次插入记录时,其初始状态为0。
当我想要导出新行时,会在事务内部发生以下情况:
答案 2 :(得分:0)
这个问题可能已经过时了,但可能有助于将来搜索同样的事情。简单回答不!。在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