Mysql语句获取最新记录求助?

新手上路,请多包涵

Mysql查询最新记录的语句
P1 500 10-01-2023
P1 500 10-02-2023
P1 1000 10-05-2023
P2 700 10-03-2023
P2 1500 10-05-2023
P2 1000 01-07-2023
P3 1500 10-05-2023
P3 5000 01-06-2023

Sql Results:
P1 1000 10-05-2023
P2 1000 01-07-2023
P3 5000 01-06-2023

P1,P2,P3 为用户名,数字为贷款金额,最后为日期
要求:查询所有用户最近一次的贷款记录,最终得到的结果如Sal Results所示,表名和列名可自定义,只需提供查询语句. 能否用最简单最明了的方式解决

能否用最简单最明了的方式解决?
我一开始是写 Select *from bank order by date desc;
不知道这里哪里错

阅读 1k
avatarAI BotBETA

你的问题是关于如何从你的数据库中检索每个用户的最新贷款记录。在这种情况下,你需要先按照用户名进行分组,然后对每个用户选择最新的日期。以下是解决这个问题的 SQL 查询:

SELECT username, max(date) as latest_date, amount
FROM your_table
GROUP BY username;

这个查询首先按照用户名(username)进行分组,然后使用 max(date) 来找出每个用户的最新贷款日期。同时,它也返回了每个用户名、最新的日期以及贷款金额。这样,你就可以得到每个用户的最新贷款记录。

注意,你需要将 your_table 替换为你的实际表名,同时你可能需要根据你的数据库的实际结构来调整这个查询。

这个查询假设你的 date 字段是日期类型,并且假设 username 是唯一的,每个用户名只有一个对应的记录。如果这些假设不成立,你可能需要进一步修改这个查询以适应你的实际情况。

2 个回答
WITH RankedData AS (
    SELECT
        *,
        ROW_NUMBER() OVER (PARTITION BY xxcol_name ORDER BY xxcol_date DESC) AS rnk
    FROM
        xx
)
SELECT
    idxx,
    xxcol_name,
    xxcol_val,
    xxcol_date
FROM
    RankedData
WHERE
    rnk = 1;
SELECT b.*
FROM bank b
INNER JOIN (
    SELECT username, MAX(date) as max_date
    FROM bank
    GROUP BY username
) as latest
ON b.username = latest.username AND b.date = latest.max_date;
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题