gpt4 book ai didi

mysql - 计算用户出价最高的所有项目

转载 作者:可可西里 更新时间:2023-11-01 07:37:24 28 4
gpt4 key购买 nike

我目前正在做一个拍卖系统,功能已经全部完成。我现在需要在用户个人资料中添加一个计数,以显示用户当前出价的商品数量。

系统由两个关键表组成(当然系统中有额外的表,但这些是唯一与此问题相关的表):

item_sales:

+-----+------------------+------------+-------------+---------+
| id | selling_format | duration | list_date | buyer |
+-----+------------------+------------+-------------+---------+

item_sales_bids:

+-----+-------------+-----------+---------------+-----------+--------+
| id | sale_item | user_id | current_bid | max_bid | date |
+-----+-------------+-----------+---------------+-----------+--------+

item_sales_bidsdate 是出价时间的 Unix 时间戳。

我可以使用以下查询轻松获得给定用户的所有出价计数:

   SELECT COUNT(DISTINCT(`item_sales_bids`.`user_id`)) AS `total`,
SUM((`sale`.`list_date` + (`sale`.`duration` * 86400)) - UNIX_TIMESTAMP()) AS `endTime`
FROM `item_sales_bids`
INNER JOIN `item_sales` `sale` ON `item_sales_bids`.`sale_item` = `sale`.`id`
WHERE `user_id` = 1
GROUP BY `sale_item`
HAVING `endTime` > 0

我想做的是运行与上述类似的查询,但只包括指定用户是当前最高出价者的记录(即给定项目的出价集的最大 ID 条目具有 user_id value = 给我们的用户)。

不幸的是,我不知道如何实现这一目标。

我已经设置了一个 SQLFiddle 来协助 > http://sqlfiddle.com/#!2/b98e4/3

最佳答案

执行订阅查询以获取所有项目的最新出价,然后将其加入 item_sales_bids 以仅处理最新的项目。

像这样:-

SELECT COUNT(DISTINCT(item_sales_bids.user_id)) AS total,
SUM((sale.list_date + (sale.duration * 86400)) - UNIX_TIMESTAMP()) AS endTime
FROM item_sales_bids
INNER JOIN item_sales sale ON item_sales_bids.sale_item = sale.id
INNER JOIN
(
SELECT sale_item, MAX(id) AS LatestBid
FROM item_sales_bids
GROUP BY sale_item
) Sub1
ON item_sales_bids.sale_item = Sub1.sale_item AND item_sales_bids.id = Sub1.LatestBid
WHERE user_id = 1
GROUP BY item_sales_bids.sale_item
HAVING endTime > 0

关于mysql - 计算用户出价最高的所有项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17969134/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com