在WordPress中如何从数据库中随机取出三条数据?

导语:数据库中的数据一般是有序的,按顺序来排列,按顺序来检索,但我们有时候也会需要无序的数据来实现某个功能。比如,我们现在需要随机从数据库中取出三条数据,我们来看看应该怎么做。

随机取出数据库的数据

在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()是为了安全性。

结束

你学会了?随机从数据库中取出数据有时候还是相当重要的,马克一下吧。

发表评论

邮箱地址不会被公开。 必填项已用*标注