2013-08-16 147 views
0

我从数据库中提取旅馆列表。有些已升级,有权让他们出现在列表顶部。目前在升序升级后的节目,然后使用常规的那些如下:mysql按RAND()按降序排列

SELECT Company FROM bandb Where BusinessState = '$State' AND BusinessCity = '$City' AND (Active = 'Web' OR Active = 'Name') ORDER by featured asc, Company asc 

我需要改变它,升级后的旅馆以随机顺序其次是旅馆的其余部分按升序排列,但我露面难倒。有任何想法吗?

+0

我真的很希望这些插值可以[正确地转义](http://bobby-tables.com/)。 – tadman

+0

我有一个函数在 – user2689989

+0

之前清理它们“清理它们的函数”的问题是它们通常是错误的。 SQL转义应该是明确的,并且非常明显。 – tadman

回答

4

尝试

SELECT Company, IF(featured, rand(), 0) AS rand_position 
FROM bandb 
Where BusinessState = '$State' AND BusinessCity = '$City' AND (Active = 'Web' OR Active = 'Name') 
ORDER by featured asc, rand_position DESC, Company asc 

如果公司的“特色”,因为他们的位置产生的随机数,否则,他们得到了0。然后你在那个随机场上排序。非特色公司最终在底部,而特色公司则显示按该随机数排序。