2011-03-28 32 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