从数据库中简单随机查询

时间:2011-09-30 23:13:33

标签: php mysql random

我目前有一个广告列表网站,其中有3个订购过滤器。默认情况下,广告按以下行排序:

    $this->setState('filter_order', $app->getUserStateFromRequest('com_adsman.filter_order','filter_order', "start_date"));

当我将start_date更改为另一个列名时,它默认按该列排序,因此我知道需要进行更改的位置。现在,我将如何根据上面的代码显示随机结果?

谢谢!

编辑:这是调用实际查询的位置。

            $Orderings[]    = "`a`.$filter_order $filter_order_Dir";
    $Orderings[]    = "`a`.`id` $filter_order_Dir ";        

$query = " SELECT ".implode(",",$SelectCols)." \r\n ".

     " FROM `#__ads` AS `a` \r\n".

     implode(" \r\n ",$JoinList)."\r\n".

     $where."\r\n".

     " GROUP BY `a`.`id` ".

     " ORDER BY ".implode(",",$Orderings)." \r\n "; 

我正在考虑使用像

这样的东西

$ rand = rand(.implode(“,”,$ SelectCols));

并将$ filter_order更改为$ rand ..我知道这不会起作用,错误的语法和错误的一切,这是我需要帮助的地方!

2 个答案:

答案 0 :(得分:0)

好吧,因为查询是在其他地方创建的,并且只填充了来自这一行的参数...你不能只改变这一行......

找到实际的查询...将“rand()作为随机”添加一个新列,并在此行中将“start_date”更改为“random”...

//编辑:

$query = " SELECT ".implode(",",$SelectCols).",rand() as random \r\n ".
     " FROM `#__ads` AS `a` \r\n".
     implode(" \r\n ",$JoinList)."\r\n".
     $where."\r\n".
     " GROUP BY `a`.`id` ".
     " ORDER BY ".implode(",",$Orderings)." \r\n "; 

应该给你一个名为“随机”的随机列(当然,如果已经有一个具有该名称的列,那就麻烦了......所以也许选择一个唯一的名称而不是“随机”)

答案 1 :(得分:0)

使用"RAND()"作为ORDER BY列。