2014-11-14 32 views
0

我需要從某個表格產品中獲取記錄,從幾個類別中獲取記錄,而沒有將這些記錄集中在幾個類別中。獲取按類別分佈的隨機記錄

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

正如你可以在SQLFiddle看,我有5個類別和20個產品(當然這是一個例子)。例如,我想獲得10個沒有冒險從5類或更多產品獲得第2類產品的產品,並且只有5個產品的產品數量爲1(或無)。

如果可能的話,如果6個產品,返回3等)。

MySQL是否會自動爲我設置?

+0

也許用一個變量來設定的比例,並使用作爲查詢或子查詢,設置數量在'LIMIT' – 2014-11-14 19:18:12

+0

的限制是預定義的 – 2014-11-14 19:22:25

+0

我的意思是子查詢 – 2014-11-14 19:23:38

回答

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() 
+0

這是一個壞主意。性能低下(5選擇),太多詳細...並沒有解決問題。 – 2014-11-14 19:50:47

+0

我的理解是:你問不同類別的有限數量的行...所以:1)爲整個組設置限制(所以你不能爲每個類別設置具體限制)**或** 2)爲每個類別設置限制=每個子查詢一個 – 2014-11-14 21:08:52

+0

你是否確實沒有其他選擇? – 2014-11-14 22:02:36