我有一个简单的拍卖数据库。它包含一个包含出价的表。
SELECT item_id, user_id, MAX(amount)
FROM auction_bids
GROUP BY item_id
在拍卖结束时,我需要找到哪些用户赢得了哪些项目(金额最高)。我考虑过以下查询
time
在多个用户以相同的价格出价之前,它似乎可以正常工作。
在这种情况下,我需要检索最早的那个(即最低的GROUP BY
值)。
如何在compile 'org.openjdk.jol:jol-core:0.9'
查询中使用它?
答案 0 :(得分:2)
如果没有其他具有相同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)))
答案 1 :(得分:0)
不,这是过滤,而不是聚合:
SELECT ab.*
FROM auction_bids ab
WHERE ab.amount = (SELECT MAX(ab2.amount)
FROM auction_bids ab2
WHERE ab2.item_id = ab.item_id
);