如何从MYSQL数据库中选择10个随机行,在列x中具有唯一值?

时间:2013-01-10 15:11:01

标签: mysql

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

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

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

1 个答案:

答案 0 :(得分: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 BY您正在讨论的这个x列应该解决这个问题。实际上,由于更精确DISTINCT,您很少使用GROUP BY