2011-03-28 44 views
1

在我的情況下,我需要在第一個顯示特定的項目,除了我需要隨機選擇。所以我用下面的查詢mysql蘭德()不工作

"SELECT * FROM table_test1 WHERE id = 3 UNION(SELECT * FROM table_test1 WHERE id <> 3 ORDER BY RAND()) " 

但它不選擇隨機

我的表

id name 
1 A 
2 B 
3 C 
4 D 
5 E 

這種選擇總是C-A-B-d-E

任何一個可以解釋工會的理論?

請告訴我錯在這裏

回答

1

使用

SELECT * 
FROM table_test1 
ORDER BY CASE 
      WHEN id = 3 THEN -1 
      ELSE RAND() 
      END 

由於Quassnoi在第二份聲明中ORDER BY完全被忽略的評論指出。

語義,如果你想整個結果通過一個特定的順序進行排序,你需要的是適用於整個查詢反正或者您的解決方案可能最終依賴於有關實施假設在未來的版本中打破了order by

+0

馬丁我試過了,但它不工作..相同的結果C-A-B-D-E – Gowri 2011-03-28 12:10:06

+0

@gowri - 羞愧,我確信那就是它!我的第二個建議怎麼樣? – 2011-03-28 12:11:55

+0

哇這個作品可以解釋unoin的理論 – Gowri 2011-03-28 12:12:07