mysql - 使用 MAX() 函数获得相等值的附加条件

标签 mysql sql group-by

我有一个简单的拍卖数据库。它包括一个包含出价的表格。

+---------+---------+--------+------------+
| item_id | user_id | amount |    time    |
+---------+---------+--------+------------+
|       3 |       2 |    500 | 1540152972 |
|       3 |       4 |    500 | 1540151466 |
+---------+---------+--------+------------+

在拍卖结束时,我需要找出哪些用户赢得了哪些元素(最高金额)。我已经考虑过以下查询

SELECT item_id, user_id, MAX(amount)
FROM auction_bids
GROUP BY item_id

这似乎工作正常,直到多个用户以相同的金额出价。

在这种情况下,我需要检索最早的一个(即:最低的时间值)。

如何将其应用到我的 GROUP BY 查询中?

最佳答案

如果具有相同 item_id 的其他行没有更高的价格,则返回一行,或者如果价格相同,则另一行更晚。

SELECT item_id, user_id, amount
FROM auction_bids a1
WHERE NOT EXISTS (select 1 from auction_bids a2
                  where a2.item_id = a1.item_id
                    and (a2.amount > a1.amount
                         or (a2.amount = a1.amount and a2.time < a1.time)))

关于mysql - 使用 MAX() 函数获得相等值的附加条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52919520/

相关文章:

php - Cakephp:同时插入 tinyint 字段。仅获取 "0"或 "1"

MySQL - 生成的行号不连续

php - 获取MySQL插入时间最长的记录结果

php - 在第 15 行的 C :\wamp\www\storeinfo. php 中读取结果集的 header 时出错,并且 MySQL 服务器已在第 15 行的 C :\wamp\www\storeinfo. php 中消失

MySQL 字段值计数

mysql - 计算给定日期范围内每个月的平均值

Mysql用group by子句计算百分比?

sql - 将 Microsoft Access 连接到 phppgadmin 以在 PostgreSQL 中查询

mysql - 使用相同的整数更新 MySQL 数据库的 4,000 多行

python - 从 python 中的 groupby 对象中选择特定行