假設我有這個表 ( balances) 模式和資料:
---- --------- ------------
| id | balance | createdAt |
---- --------- ------------
| 1 | 10 | 2021-11-18 |
| 2 | 12 | 2021-11-16 |
| 3 | 6 | 2021-11-04 |
---- --------- ------------
要檢索最近 7 天的余額,我會執行以下操作:
SELECT * FROM "balances" WHERE "createdAt" BETWEEN '2021-11-19T09:04:17.488Z' AND '2021-11-12T10:04:17.488Z' ORDER BY "createdAt" ASC
這會給我 2 條記錄(ID:1 和 2),這很好。但是,我正在考慮做的,可能是第二個查詢,是按日期獲取該結果集之前的記錄createdAt,因為我的查詢是按createdAt. 有沒有辦法用 PG 做到這一點?
所以無論我使用什么時間范圍,我也會檢索結果集的 n-1 記錄
uj5u.com熱心網友回復:
要獲取您想要的記錄,您可以使用LIMIT查詢:
SELECT *
FROM balances
WHERE createdAt < '2021-11-19T09:04:17.488Z'
ORDER BY createdAt DESC
LIMIT 1;
這個答案假設只有一個記錄在邏輯上早于2021-11-19T09:04:17.488Z,并且沒有關系的邊緣情況。如果有聯系,我們可以通過在ORDER BY子句中添加更多級別來打破它們。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/361563.html
標籤:PostgreSQL的
下一篇:如何更新行以向列添加字符
