mysql - 每个用户最多显示3笔交易

标签 mysql sql

假设我有这张 table 。

users|amount
------------
User1|  500
User1|  400
User1|  300
User1|  200
User1|  100
User2|  500
User2|  400
User2|  300
User2|  200
User3|  300
User3|  200

我想为每个用户最多显示 3 笔交易。示例中给出的结果应该是这样的。

users|amount
------------
User1|  500
User1|  400
User1|  300
User2|  500
User2|  400
User2|  300
User3|  300
User3|  200

有没有办法在 SQL (MySQL) 中做到这一点?我应该采取什么步骤?

最佳答案

你可以这样尝试

SELECT
    users, amount
FROM (SELECT
    users, amount,
    ROW_NUMBER() OVER (PARTITION BY users ORDER BY amount DESC) AS rn
FROM yourtable) AS a
WHERE a.rn <= 3

关于mysql - 每个用户最多显示3笔交易,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39703297/

相关文章:

mysql - 比较两个表或查询和表

mysql - 使用 MAX 函数连接三个表

php - 使用phpexcel将MySql导出到excel

java - 根据周数从MYSQL中检索数据

java - JPA Hibernate JOIN ... ON ... AND

mysql - 如果满足每个条件的一个条件,则列出所有值

php - Symfony2 查找重复行并对另一列求和

php - Mysql 选择 10 条记录(5 条记录和 5 条另一条记录)

php - 使用 PHP/MySQLi 进行多次更新和插入

mysql - AWS lightsail ubuntu 18.04 服务器上的 Docker mysql 5.7 不断重启