gpt4 book ai didi

php - 获取每个组的多个 GROUP BY 结果,或使用单独的串联表

转载 作者:行者123 更新时间:2023-11-29 15:04:49 27 4
gpt4 key购买 nike

我正在开发一个拍卖网络应用程序。现在我有一个包含出价的表格,我想从该表中选择每次拍卖的最后 10 个出价。

现在我知道我可以通过使用以下方式获得最后的出价:

从 bids WHERE * GROUP BY bids.id ORDER BY bids.created 中选择 bids.id

现在我了解到为 GROUP BY 结果设置一个金额并不是一件容易的事情,实际上我没有找到简单的解决方案,如果有的话我想听听。

但是我已经想出了一些解决方案来解决这个问题,但我不确定我是否做得很好。

替代方案

第一件事是创建一个新表,命名为 bids_history。在此表中,我存储最后一项的字符串。

示例:

bids_history
================================================================
auction_id bid_id bidders times
1 20,25,40 user1,user2,user1 time1,time2,time3

我也必须存储名称和时间,因为我没有找到简单的方法来获取 bid_id(20,25,40) 中使用的字符串,并在连接中使用它。这样我就可以只加入拍卖 ID,并且获得最新的结果。

现在,当提出新的出价时,步骤如下:

  • 将出价插入出价中,获取最后插入的 ID
  • 获取其 bids_history 字符串拍卖品
    • 分解字符串
    • 插入新值
    • 检查是否超过 3 个
    • 爆炸数组,并再次插入字符串

在我看来,这一切都不是一个很好的解决方案。我真的不知道该走哪条路。请记住,这是一个有大量出价的网站,每个拍卖项目最多可以有 15.000 次出价。也许因为这个数量,分组和排序不是一个好方法。如果我错了,请纠正我。

拍卖结束后,我会清理出价表,删除所有出价,并将它们存储在单独的表中。

有人可以帮我解决这个问题吗?

如果您读过,感谢您的阅读..

编辑

我使用的表格是:

bids
======================
id (prim_key)
aid (auction id)
uid (user id)
cbid (current bid)
created (time created)
======================

auction_products
====================
id (prim_key)
pid (product id)
closetime (time the auction closses)

我想要的查询结果:

result
===============================================
auction_products.id bids.uid bids.created
2 6 time1
2 8 time2
2 10 time3
5 3 time1
5 4 time2
5 9 time3
7 3 time1
7 2 time2
7 1 time3

这是每次拍卖的最新出价,按数字选择,3 或 10

最佳答案

使用用户变量控制流,我最终得到了这个(如果你想要十次拍卖,只需将 <=3 替换为 <=10 ):

SELECT a.*
FROM
(SELECT aid, uid, created FROM bids ORDER BY aid, created DESC) a,
(SELECT @prev:=-1, @count:=1) b
WHERE
CASE WHEN @prev<>a.aid THEN
CASE WHEN @prev:=a.aid THEN
@count:=1
END
ELSE
@count:=@count+1
END <= 3

关于php - 获取每个组的多个 GROUP BY 结果,或使用单独的串联表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2363600/

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