mysql按顺序随机()和按价值排序 - 可能吗?
问题描述:
我想知道是否有可能从数据库中获取随机数组,但也可以基于数组的值(根据***排序)来授予某些数组的特权 我会解释一下自己。我有一些帖子在php应用程序中随机显示给用户,但我也想首先显示流行的帖子。 我不知道我是否真的很清楚,谢谢你的帮助!mysql按顺序随机()和按价值排序 - 可能吗?
答
ORDER BY popular DESC, RANDOM()
假设popular
是1
或0
,这将首先显示的受欢迎的,那么不受欢迎的人。在每个类别中,它们都是随机的。
+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;
把'RAND()'和'ORDER BY'语句放在一起是一个很好的方式来保存数据库的性能,如果我发现任何与我一起工作的人都会这样做,这是公开的羞辱。 – Sammitch
好的...你有另一个选项,可以让你在数据库中对数据进行排序吗?我不这么认为。 –
那么答案肯定不是很糟糕,这是肯定的。 http://jan.kneschke.de/projects/mysql/order-by-rand/ – Sammitch