像这样生成ORM:
SELECT * FROM "games" WHERE "competition_id" IN
(SELECT "id" FROM "competitions" WHERE "id" IN (1,2,3))
ORDER BY "date" LIMIT 10
显示第1行到第10行。
但是之后:
UPDATE "games" SET "season_id"=2
相同的SELECT
返回1,2,3 ... 11,12等行而不是1,2,3 ... 9,10
是的,返回的行仍然是10,但最后的行总是被替换为10 ...
之后的行答案 0 :(得分:1)
LIMIT
范围内存在多个匹配结果,则 ORDER BY
无法保证将返回哪些行。因此,如果您有超过10行具有相同的date
,或者如果大多数具有不同的日期但是第9行,第10行,第11行和第12行具有相同的date
,那么您不是保证获得一致的结果,将在第9和第10个时段返回。 PostgreSQL会根据自己的判断选择这些 - 当记录更新时,这通常会改变。
尝试将id
添加到ORDER BY列表中以解决此问题。