要获取每个账户的最后一条记录,通常可以使用SQL中的窗口函数(Window Function)来实现。以下是一个基本的示例:
假设我们有一个名为 transactions
的表,结构如下:
| id | account_id | amount | transaction_date | |----|------------|--------|------------------| | 1 | 1 | 100 | 2023-01-01 | | 2 | 1 | 200 | 2023-01-02 | | 3 | 2 | 150 | 2023-01-01 | | 4 | 2 | 300 | 2023-01-03 |
我们希望获取每个账户的最后一条交易记录。可以使用以下SQL查询:
WITH RankedTransactions AS (
SELECT
id,
account_id,
amount,
transaction_date,
ROW_NUMBER() OVER (PARTITION BY account_id ORDER BY transaction_date DESC) AS rn
FROM transactions
)
SELECT
id,
account_id,
amount,
transaction_date
FROM RankedTransactions
WHERE rn = 1;
transaction_date
列的数据类型是日期或时间戳类型,以便正确排序。account_id
和 transaction_date
列上创建复合索引。CREATE INDEX idx_account_date ON transactions (account_id, transaction_date DESC);
通过这种方式,可以有效地获取每个账户的最后一条记录,并解决可能遇到的问题。
领取专属 10元无门槛券
手把手带您无忧上云