2012-01-08 47 views
0

讓我們說我有一個表稱爲animals,看起來像這樣:獲取隨機行(但僅當行包含特定值)

1 red  fox 
2 blue elephant 
3 red  dog 
4 yellow cat 
5 green mouse 
6 blue rat 

實際上我希望做的是使一個只包含我指定值的行的臨時表(一個虛擬表)。例如red

1 red  fox 
3 red  dog 

,然後從該虛擬表搶一個隨機行。

我不想做的是永久創建這些表,並不得不不斷更新他們從主animals表獲取信息。我想立即執行此操作,並快速使用某種子查詢,查看,臨時表或您想調用的任何類型。

請記住,我是一個完整的PHP noob,可以儘可能多地澄清涉及語法。

謝謝!

回答

3

您可以使用SQL查詢像下面

SELECT * FROM table 
where color = 'red' 
ORDER BY RAND() 
LIMIT 1 

您可以更改限制到任何數量要獲取

+2

此解決方案的行,但它是大型應用程序真正的性能殺手。也許更好的辦法是選擇所有包含'red'的ID,然後從它們中選擇隨機ID,然後用這個ID選擇一行。 – 2012-01-08 11:40:04

+0

那麼,我不是一個PHP大師,但可能是你可以得到兩個隨機數在1 ... n之間,其中n是您的查詢將獲取的總行數。並從這些位置中選擇兩個結果。 – Sap 2012-01-08 11:44:12

+0

@PeterKrejci:但這正是查詢所要做的。你能否詳細說明你的想法? – 2012-01-08 11:44:31