GBase 8a数据库窗口函数实现分组取记录详解 ROW_NUMBER() 是南大通用GBase 8a数据库gbase database支持的窗口函数之一为结果集的每一行分配一个连续唯一序号。配合 PARTITION BY 分组和子查询过滤可以轻松实现取每个分组中最新/最大的一条记录——这在传统写法中需要复杂的自连接才能实现。使用示例-- 场景查询每个用户最近一次登录的记录-- 准备数据CREATE TABLE user_login (user_id INT,login_time DATETIME,ip_addr VARCHAR(50));-- 核心写法用 ROW_NUMBER() 按用户分组、按时间倒序编号SELECT user_id, login_time, ip_addrFROM (SELECT user_id,login_time,ip_addr,ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY login_time DESC) AS rnFROM user_login) tWHERE rn 1;三种排名函数对比注意窗口函数不能直接放在 WHERE 子句中必须先在子查询中计算外层再过滤。返回搜狐查看更多