您好,我有一个关于从数据库中选择随机条目的问题。我有4个表格,产品,出价和autobids以及用户。从组数据库获取随机记录
Products
-------
id 20,21,22,23,24(prime_key)
price...........
etc...........
users
-------
id(prim_key)
name user1,user2,user3
etc
bids
-------
product_id
user_id
created
autobids
--------
user_id
product_id
现在多个用户可以在产品上拥有自动签名。所以在接下来的投标人我想从自动竞标表中选择一个随机的用户在语言查询
例如:
在自动竞价表中的每个产品我想一个随机的用户,这是不是最后的投标人。
产品20上有user1,user2,user3 autobidding。
在产品21用户1,用户2,用户3的autobidding
那我要一个结果,看起来例如像这样
20 - user2的
21 - 用户3
只是一个随机的用户。我尝试了miximg GOUP BY(product_id)并使其成为RAND(),但我无法从中获得正确的值。现在我得到一个随机用户,但所有与它一起使用的值都不匹配。
有人可以帮我构建这个查询中,我使用PHP和MySQL
哇,这看起来像是一个很好的解决方案。这肯定会得到我期待的结果。我有关于性能寿命的问题。此查询必须在我的系统中每秒运行一次,因为可能会每秒发起一次新的自动出价。将所有的自动出价转化为php是否会更快,然后仅用循环筛选出不需要的内容。创建临时表对我来说似乎有点慢,我认为函数rand()和max()也是。我可能会误解。我不得不说我正在使用inooDB表。 – 2010-03-17 09:31:23
可以通过跟踪“latest_bid”表中每个产品的最新出价的user_id和product_id来改进数据库方法。维护该表的一个好方法是在出价表上添加一个触发器,以便每次添加新出价时,latest_bid表都会更新。您也可以以类似的方式缓存出价状态 - 因此当产品的新出价到达时,只会重新计算当前的产品出价。 – Martin 2010-03-17 12:59:21