【问题标题】:How do I select 10 random rows from a MYSQL Database, with unique values in column x?如何从 MYSQL 数据库中选择 10 个随机行,在 x 列中具有唯一值?
【发布时间】:2013-01-10 15:11:00
【问题描述】:

此查询的目标是从 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

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

【问题讨论】:

标签: mysql


【解决方案1】:
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 更精确。

【讨论】:

    猜你喜欢
    • 2011-08-17
    • 1970-01-01
    • 2017-03-05
    • 1970-01-01
    • 1970-01-01
    • 2014-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多