在拍卖中,两个用户可以提出相同的出价金额,例如,两个玩家可以出价“1”,这将使该出价金额总计为 2。
我需要一个查询,获取所有用户的单次出价金额以及拍卖 ID 范围内该出价金额的总数。
就目前情况而言,我首先获得用户的出价:
SELECT bid_amount FROM all_bids WHERE auction_id = '129' AND user_id = '9'
然后我在 PHP 中循环每个金额并执行以下操作
SELECT COUNT(*) FROM all_bids WHERE auction_id = '129' AND bid_amount = 'xxx'
但这当然非常耗电,我相信它可以在一个查询中完成。
我已经做到了
SELECT bid_amount,COUNT(*) FROM (SELECT bid_amount FROM all_bids WHERE auction_id = '129' AND user_id ='9') as foo GROUP BY bid_amount
它返回了正确的出价金额,但计数都是1,这是错误的,因为我猜我的错误查询仅计算子查询内的值,而不是该用户放置的出价之外的值
最佳答案
SELECT a.*, b.cnt from all_bids a
join (select bid_amount,COUNT(*) cnt from all_bids group by bid_amount) b
on a.bid_amount=b.bid_amount
WHERE a.auction_id = '123' AND a.player_id = '456'
关于mysql - SQL 获取值,然后计算这些值的总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49394687/