0

此查询的目标是从 mysql 数据库中挑选 10 名获胜者参加比赛。列是“product_id”、“uid”和“winner”。

获胜者始终为 0(目前,尚未选择获胜者),uid 是唯一索引(每人一个条目),product_id 是 10 个不同的产品 ID 之一。为了参加比赛,用户登录并选择他们想要赢得的 10 种产品中的哪一种。

数据库中有 1000 行,10 个产品 ID 中的每一个都有大约 100 行。

我想要一个查询,为 10 个不同的产品 ID 中的每一个选择一个随机条目。下面的查询选择了 10 个随机条目,但一些产品 ID 是相同的。

SELECT DISTINCT product_id, uid FROM database.table WHERE winner = 0 ORDER BY RAND( ) LIMIT 0 , 10

如何改进此查询以按我需要的方式工作?

4

1 回答 1

0
SELECT product_id, uid
FROM (  SELECT product_id, uid
        FROM database.table
        WHERE winner = 0
        ORDER BY RAND()) AS h
GROUP BY product_id

GROUP BYx我认为您正在谈论的这个专栏应该可以解决这个问题。DISTINCT实际上,由于更精确,您很少需要使用GROUP BY.

于 2013-01-10T15:21:29.017 回答