获取按类别分发的随机记录

时间:2014-11-14 18:43:21

标签: mysql

我需要从几个类别的表格产品中获取记录,而不会冒险接收集中在少数类别中的记录。

我的sqlFiddle:http://sqlfiddle.com/#!2/060877/2

正如您在SQLFiddle中看到的,我有5个类别和20个产品(当然它是一个例子)。例如,我希望获得10种产品,而不会有从第2类获得5种或更多产品的风险,而在5种产品中只能获得1种(或者没有)。

如果可能的话,按每个类别的数量比例返回(如果是6个产品,则返回3等等)。

MySQL会自动为我做这个吗?

1 个答案:

答案 0 :(得分:0)

我的意思(根据需要设置限制):

(SELECT p.*, c.name AS category 
FROM products AS p 
INNER JOIN category c ON p.category_id=c.id 
WHERE c.id = 1 LIMIT 6) 

UNION 

(SELECT p.*, c.name AS category 
FROM products AS p 
INNER JOIN category c ON p.category_id=c.id 
WHERE c.id = 2 LIMIT 3)

ORDER BY RAND()