拍卖脚本SQL查询需求:获取用户出价及对应金额的拍卖内总次数
解决方案:获取指定用户出价及对应金额的全场次数
没问题,我来帮你搞定这个SQL查询需求!你的核心需求是拿到指定用户在某场拍卖里的所有出价金额,同时知道每个金额在这场拍卖里被多少人(包括该用户自己)提交过对吧?
这里有两种写法,分别对应两种场景:
场景1:保留用户的每条出价记录(即使重复出价同一金额)
如果你想看到用户的每一条出价记录,同时显示对应金额的全场总次数,可以用这个查询:
SELECT ab.bid_amount, bid_count.total_count FROM all_bids ab JOIN ( -- 先统计整场拍卖中每个出价金额的总提交次数 SELECT bid_amount, COUNT(*) AS total_count FROM all_bids WHERE auction_id = '129' GROUP BY bid_amount ) bid_count ON ab.bid_amount = bid_count.bid_amount WHERE ab.auction_id = '129' AND ab.user_id = '目标用户ID';
逻辑说明:
- 子查询
bid_count先对目标拍卖(auction_id='129')的所有出价按金额分组,算出每个金额的总次数。 - 主查询把用户的个人出价记录和这个统计结果通过
bid_amount关联,这样每条用户出价都会带上对应的全场总次数。比如用户两次出价1元,全场共有3次1元出价,结果会返回两行1 | 3。
场景2:只看用户出过的不同金额及对应全场次数
如果只需要用户出过的唯一金额列表,以及每个金额的全场总次数,可以给主查询加个GROUP BY去重:
SELECT ab.bid_amount, bid_count.total_count FROM all_bids ab JOIN ( SELECT bid_amount, COUNT(*) AS total_count FROM all_bids WHERE auction_id = '129' GROUP BY bid_amount ) bid_count ON ab.bid_amount = bid_count.bid_amount WHERE ab.auction_id = '129' AND ab.user_id = '目标用户ID' GROUP BY ab.bid_amount, bid_count.total_count;
使用提示:
- 记得把语句里的
'129'替换成你实际要查询的拍卖ID,'目标用户ID'换成指定用户的ID。 - 如果你的
all_bids表还有其他需要展示的字段(比如出价时间bid_time),直接加到SELECT列表里就行,不影响统计逻辑。
内容的提问来源于stack exchange,提问作者Gary Stewart
相关产品推荐
相关产品推荐

