2011-04-22 70 views
2

一個的每個值我使用MySQL的我有一個這樣的表:讀取多隨機值某一領域

| id |類別|字段1 |字段2 |

類別字段不是唯一的。

我想爲每個類別值

我無法找到在一個查詢的解決方案取5個隨機行。

你能幫我解決這個問題嗎?

謝謝

編輯: 我發現這一點:

SELECT t.* 
FROM (
     SELECT @lim := 5, 
       @cg := -1 
     ) vars, 
     table_example t 
WHERE CASE WHEN @cg <> category THEN @r := @lim ELSE 1 END > 0 
     AND (@r := @r - 1) >= 0 
     AND (@cg := category) IS NOT NULL 
ORDER BY 
     category , id 

但在這種情況下,提取5行對每個類別的值(但它是由ID排序)。我試圖調整,要隨機排序,但我無法找到自己滿意的東西......

+0

我想你會需要一個程序來做到這一點。我不相信一個查詢可以做到這一點。 – Nik 2011-04-22 16:50:42

+0

我對MYSQL語言不是很有經驗,你說的程序是什麼意思? – pauldid 2011-04-22 17:45:12

+0

存儲過程或函數可以獲取每個類別,爲每個類別獲取五條記錄,並構建一切結果表。這可能是你最好的選擇。你想要的對於單個查詢來說非常複雜。 – Nik 2011-04-22 18:13:23

回答

0

我不知道這工作,只是一種預感:

SET @rownum=1; 

SELECT t.id,CASE WHEN @rownum > 5 THEN @rownum:=0 ELSE @[email protected]+1 
FROM table_example t WHERE @rownum<=5 GROUP BY t.category,t.id ORDER BY RAND()