gpt4 book ai didi

php - 限制每个用户的 MySQL 结果数

转载 作者:太空宇宙 更新时间:2023-11-03 10:54:57 25 4
gpt4 key购买 nike

我有一个网站,用户可以在其中列出待售商品。该站点的前端使用以下 SQL 显示随机出售的商品。

SELECT * FROM auctions 
WHERE closed = 0 AND suspended = 0 AND starts <= 1390990443
ORDER BY RAND() LIMIT 30

问题在于,一个用户的销量很大,以至于网站的前端主要是那个用户。我想将用户使用 auction.user 列显示的项目限制为每个用户五个项目。

我希望有 SQL 可以在一行中执行此操作,如果没有,那么建议或关于谁在多个查询上建立结果的链接将不胜感激。编码语言为PHP。

编辑:数据库结构在这里。 http://pastebin.com/3ua18k4h

最佳答案

我个人会尝试形成一些解决方案,将结果提取到 PHP 中并在那里过滤它们,但那是因为我觉得 PHP 比 MySQL 更舒服。但是,您可以在没有 PHP 过滤的情况下,仅通过您的 MySQL 查询来执行类似的操作,但不知道它如何扩展到大量用户(不确定您的完整表模式,所以我即兴创作)

SELECT ID, USERNAME, AUCTION_ID
FROM
(
SELECT *, @row:=IF(username=@username,@row,0)+1 AS auctioncount, @username:=username FROM
(SELECT *,RAND() AS trand FROM table1) t1,
(SELECT @row:=0,@username:='') tm2
ORDER BY username,trand
) t2
WHERE auctioncount<=5 LIMIT 30

SQL fiddle :http://sqlfiddle.com/#!2/9bd47/1

您可以将 auctioncount 更改为您希望每个用户拥有的最大列表数。

关于php - 限制每个用户的 MySQL 结果数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21428057/

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