是否可以使用预定义的一组列值(ID)按“ order by”在mysql中排序,例如:order by(ID = 1,5,4,3),因此我会在其中得到记录1、5、4、3订购吗?
更新: 关于滥用mysql ;-)我必须解释为什么我需要这个…
我希望记录每5分钟随机更改一次。我有一个cron任务来执行更新表,以在其中放置不同的随机排序顺序。只有一个问题!分页。我将有一位访问者来到我的页面,我给他前20个结果。他将等待6分钟,然后转到第2页,并且由于排序顺序已经更改,因此他将得到错误的结果。
所以我认为,如果他来到我的网站,我会将所有ID都放在一个会话中,而当他进入第2页时,即使排序已经改变,他也会得到正确的记录。
还有其他更好的方法吗?
您可以使用ORDER BY和FIELD函数。见http://lists.mysql.com/mysql/209784
SELECT * FROM table ORDER BY FIELD(ID,1,5,4,3)
它使用Field()函数,该函数根据文档“返回str1,str2,str3,…列表中str的索引(位置)。如果找不到str,则返回0”。因此,实际上您是根据该函数的返回值(即给定集中字段值的索引)对结果集进行排序。