mysql按顺序随机()和按价值排序 - 可能吗?

问题描述:

我想知道是否有可能从数据库中获取随机数组,但也可以基于数组的值(根据***排序)来授予某些数组的特权 我会解释一下自己。我有一些帖子在php应用程序中随机显示给用户,但我也想首先显示流行的帖子。 我不知道我是否真的很清楚,谢谢你的帮助!mysql按顺序随机()和按价值排序 - 可能吗?

+0

把'RAND()'和'ORDER BY'语句放在一起是一个很好的方式来保存数据库的性能,如果我发现任何与我一起工作的人都会这样做,这是公开的羞辱。 – Sammitch

+0

好的...你有另一个选项,可以让你在数据库中对数据进行排序吗?我不这么认为。 –

+0

那么答案肯定不是很糟糕,这是肯定的。 http://jan.kneschke.de/projects/mysql/order-by-rand/ – Sammitch

ORDER BY popular DESC, RANDOM() 

假设popular10,这将首先显示的受欢迎的,那么不受欢迎的人。在每个类别中,它们都是随机的。

+0

谢谢你的回答。我会试试这个 –

+0

这对我有效!在流行的数组中,它必须具有相同的值,并且它将对所有0值进行排序,例如或者全部2,您不限于bool类型 –

是的,这可以用来选择5个随机排序的随机条目。

SELECT MIN(ID), MAX(ID) FROM table INTO @min, @max; 
SET @range = @max - @min; 
SET @mr = @min + ((@range/1000) * (rand() * 1000)); 

SELECT * FROM table WHERE id >= @mr and id <= @mr + 1000 
ORDER BY popularity DESC LIMIT 5;