此查询的目标是从条目的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
如何改进此查询以我需要的方式工作?
答案 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
。