2010-06-19 80 views
0

我的查詢使用ORDER BY CASE正確選擇結果。 我想在每個案例中隨機化結果。即 ORDER BY CASE WHEN apples (randomize) THEN 1 WHEN pears (randomize) THEN 2, etc. 所以我的結果仍然按每種情況排序,但在PER結果的情況下它們是隨機的,每次查詢運行。mysql中的隨機順序按實例排列

+0

你可以嘗試'ORDER BY CASE,RAND()' 。 – phimuemue 2010-06-19 11:18:01

回答

0

您可以試試ORDER BY CASE, RAND()。當然,RAND()會生成一個隨機數。

但是,我聽說某處SQL中的混洗元素不是最有效的方式,並且最好隨機化PHP中的元素。但每個案例隨機化並不是一項簡單的任務。 (PHP rand() function

+0

我相信在結果集很大時使用RAND對MySQL進行排序時存在問題,但我不是100%確定的。 – 2010-06-19 11:44:34

+0

是的,有:http://jan.kneschke.de/projects/mysql/order-by-rand/ – ircmaxell 2010-06-19 11:57:39

+0

但是這樣做 - 在case,'when','then'和END,RAND()完成後查詢完美。 – InnateDev 2010-06-19 15:22:21

0

通常,爲了簡單起見,我將在SQL Order By中引入一個NewID()函數來隨機化結果的順序。在你的情況下,你可以使用uniqid(),或者如果你真的把查詢直接傳遞給MSSQL,你也可以使用NEWID()以及...

+0

這將如何在MySQL中工作 - 林不知道我應該'谷歌'在這裏NewID()? – InnateDev 2010-06-19 12:43:01

+0

MySql使用uniqid()來生成一個GUID的等價物。試試看... – fdfrye 2010-06-21 19:04:13