我有这样的查询:
UPDATE subscribers AS s SET status = 1
FROM (SELECT id FROM subscribers
WHERE client_id = *** AND status = 0 ORDER BY id LIMIT 5) AS t
WHERE t.id = s.id AND status = 0 RETURNING *
(解释:选择所有状态为0的行但是将它们更新为状态= 1并且只给我五个最大值。)
我在订阅者表中有11行,状态为=
我遇到的问题是:当我在我的代码中执行此查询时(node.js,它不是什么编程语言,它是查询问题)在FIRST TOW循环中(首先查询)它返回5行(这是好的,因为我在内部查询中有LIMIT 5)。
但是在最后一次查询中,我有 0条记录...... ,在我的表格中有一行状态= 0等待被激活
有人有线索吗?我坚持这个
答案 0 :(得分:0)
我不得不说我的代码是并行发送查询(几乎是在同一时间),而且它正在创建一个"种族"条件,因为" subsequents"的内部查询查询正在接收OLD数据(在第一个查询的外部UPDATE之前)...所以这是一个比赛条件......我在一段时间后解决了它,感谢您的帮助,我从中学到了很多东西。