var*_*mar 7 postgresql timestamp
我正在使用此语句以升序获取按时间戳排序的所有行
DELETE FROM @tableName
WHERE id = ANY (
SELECT id
FROM @tableName
WHERE source = :p1 AND target = :p2 @readCondition
ORDER BY createddate
LIMIT @limit
FOR UPDATE SKIP LOCKED
)
RETURNING *;
Run Code Online (Sandbox Code Playgroud)
我得到了这些结果:
"MessageType":"AssignmentChange.v1","CreatedDate":"2019-12-05T10:55:22.230886"
"MessageType":"AssignmentChange.v1","CreatedDate":"2019-12-05T10:55:22.279604"
"MessageType":"AssignmentChange.v1","CreatedDate":"2019-12-05T10:55:22.276191"
"MessageType":"AssignmentChange.v1","CreatedDate":"2019-12-05T10:55:22.202338"
Run Code Online (Sandbox Code Playgroud)
如您所见,它们没有按 排序createdate
。有没有办法对子RETURNING
句中的行进行排序?
您需要对结果应用 ORDER BY。为此,请将 DELETE 语句放入公用表表达式中。然后您可以在从中选择时应用 ORDER BY
with deleted as (
DELETE FROM @tableName
WHERE id = ANY (
SELECT id
FROM @tableName
WHERE source = :p1 AND target = :p2 @readCondition
ORDER BY createddate
LIMIT @limit
FOR UPDATE SKIP LOCKED)
RETURNING *
)
select *
from deleted
order by createddate;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
124 次 |
最近记录: |