Prisma:如何查询含重复行数据的最新注册时间(无需GROUP BY/DISTINCT)
需求说明
查询数据表,获取每条记录对应Name的最新注册时间,需保留所有原始行,且禁止使用GROUP BY或DISTINCT语句。
示例数据表
ID | Name | Time_Registered | 1 | A | 2022-11-20 04:21:14.679 | 2 | A | 2022-11-21 05:21:14.679 | 3 | B | 2022-11-20 06:21:14.679 | 4 | B | 2023-11-22 08:21:14.679 | 5 | D | 2023-11-20 04:21:14.679 |
预期查询结果
ID | Name | Time_Registered | Last_Registered 1 | A | 2022-11-20 04:21:14.679 | 2022-11-21 05:21:14.679 2 | A | 2022-11-21 05:21:14.679 | 2022-11-21 05:21:14.679 3 | B | 2022-11-20 06:21:14.679 | 2023-11-22 08:21:14.679 4 | B | 2023-11-22 08:21:14.679 | 2023-11-22 08:21:14.679 5 | D | 2023-11-20 04:21:14.679 | 2023-11-20 04:21:14.679
解决方案
使用窗口函数MAX()搭配PARTITION BY子句即可实现需求,无需GROUP BY或DISTINCT:
SELECT ID, Name, Time_Registered, MAX(Time_Registered) OVER (PARTITION BY Name) AS Last_Registered FROM your_table_name;
说明
MAX(Time_Registered) OVER (PARTITION BY Name)会将数据按Name分组,为每一行计算其所属分组内的最大注册时间,最终返回所有原始行并附加对应Name的最新注册时间,完全符合需求。
内容的提问来源于stack exchange,提问作者bren
相关产品推荐
相关产品推荐

