导语:数据库中的数据一般是有序的,按顺序来排列,按顺序来检索,但我们有时候也会需要无序的数据来实现某个功能。比如,我们现在需要随机从数据库中取出三条数据,我们来看看应该怎么做。
随机取出数据库的数据
在Mysql中,提供了一个函数可以来实现取出随机的数据的函数RAND(),利用这个函数,我们可以随机的取出记录值,不过一般来说,直接在SELECT中使用RAND()会导致执行的效率会很低下,比如下面的语句。
SELECT * FROM `table` ORDER BY RAND() LIMIT 5
在WordPress中高效的取出三条随机数据
在WordPress中,如果我们想自己来直接操作表,高效取出三条随机数据,那么我们可以这么做。
global $wpdb; $querystr = "SELECT * FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`))+(SELECT MIN(id) FROM `table`)) AS id) AS t2 "; $querystr .="WHERE t1.id >= t2.id "; $querystr .="ORDER BY t1.id LIMIT 1"; $results[0] = $wpdb->get_row($wpdb->prepare($querystr,$gender)); $results[1] = $wpdb->get_row($wpdb->prepare($querystr,$gender)); $results[2] = $wpdb->get_row($wpdb->prepare($querystr,$gender));
这段代码的意思是先获取全局数据库变量$wpdb,然后将操作语句赋值给$querystr,然后利用$wpdb->get_row()执行三次,每次取一条记录。虽然执行的三次,但每次执行的时间只需要0.0001秒。
相对前面的直接使用RAND()已经是非常的高效了,这段SELECT语句使用了JOIN结构,大家可以具体的代入自己的参数。
另外使用$wpdb->prepare()是为了安全性。
结束
你学会了?随机从数据库中取出数据有时候还是相当重要的,马克一下吧。