我有一个数据库,它为我的应用程序保存测试用例,我想同时运行几个进程。现在它看起来像这样
SELECT * FROM tests WHERE status = 0 LIMIT 20;
我希望将所有这20条记录的状态更改为“2”(正在处理),以避免另一个进程采用相同数据进行测试的情况。是否可以在一个查询中使用?
修改
我想同时运行20个进程,所有这些进程都是相同的,但我不希望他们使用相同的数据 - 这就是我最初想要的原因 - >从状态= 0的数据库中获取20条记录,同时为所有20条记录设置状态= 2 - >处理它们,为这个20 - >的每一条记录设置适当的状态。回到开头
通过这种方式,当两个不同的进程从数据库中获取相同的数据时,我将避免这种情况
答案 0 :(得分:0)
您可以使用以下内容:
UPDATE
tests t1,
(SELECT `id` FROM tests WHERE `status` = 0 LIMIT 0,20) t2
SET t1.`status` = 2
WHERE
t1.`id` = t2.`id`