Php 需要按RAND对该SQL结果进行排序

Php 需要按RAND对该SQL结果进行排序,php,sql,Php,Sql,我有以下sql,需要按随机顺序对结果进行排序。我尝试按RAND()添加订单,但未成功。我可能缺少它的语法 $items = Goods_Model_Good::findByCop(array( 'where' => new JO_Db_Expr( 'good.id IN (SELECT id FROM good WHERE copId LI

我有以下sql,需要按随机顺序对结果进行排序。我尝试按RAND()添加订单,但未成功。我可能缺少它的语法

$items = Goods_Model_Good::findByCop(array(
       'where' => new JO_Db_Expr(
             'good.id IN (SELECT id
                            FROM good
                            WHERE copId LIKE ' . Helper_Db::quote($cop['copId']) .
     ')')));

在PHP中,您可以使用shuffle将数组洗牌:

shuffle($items);

在PHP中,您可以使用shuffle将数组洗牌:

shuffle($items);


所以在您的
SELECT
语句中添加
ORDER BY RAND()
?@ceejayoz这是我尝试过的,但我对SELECT非常陌生,语法似乎不正确。非常感谢您的帮助。看起来您正在使用某种奇怪的自制数据库类,因此很难进一步帮助您。Tx@ceejayoz。我没有写这个,但简而言之,它就是这样做的:findbyCop是模型函数。数组获取“good”表中的所有id,其中copId列与“cop”表中的copId列匹配。像泥一样干净?像泥一样干净。这门课把事情弄糊涂了。如果您向我们展示生成的SQL,我们可以在这方面帮助您。因此。。。在您的
SELECT
语句中添加
ORDER BY RAND()
?@ceejayoz这是我尝试过的,但我对SELECT非常陌生,语法似乎不正确。非常感谢您的帮助。看起来您正在使用某种奇怪的自制数据库类,因此很难进一步帮助您。Tx@ceejayoz。我没有写这个,但简而言之,它就是这样做的:findbyCop是模型函数。数组获取“good”表中的所有id,其中copId列与“cop”表中的copId列匹配。像泥一样干净?像泥一样干净。这门课把事情弄糊涂了。如果您向我们展示结果SQL,我们可以在那里帮助您。应该有额外的1吗?此外,OP正在寻找一个查询解决方案,而不是数组。@Evan Carslake:不,1当然是一个输入错误。OP使用SQL获取数据,并希望数据被洗牌。您可以在PHP中进行洗牌。为什么不呢?在SQL中,它在很大程度上取决于DBMS如何洗牌数据,因此纯SQL解决方案会使其不易移植。谢谢@ThorstenKettner。你的解决方案非常适合我的需要。你知道,我总是说“把它放在dbms一边”,但在这种情况下,我认为你是对的。如果将优化器保留在应用程序端,那么使用奇怪的ORDERBY子句来破坏优化器的可能性也较小。另外,我认为PHP7提高了一些数组函数的性能…@Sebas肯定有道理,数据库已经有了自己的琐事。少做一件家务就更好了。应该多做一件吗?此外,OP正在寻找一个查询解决方案,而不是数组。@Evan Carslake:不,1当然是一个输入错误。OP使用SQL获取数据,并希望数据被洗牌。您可以在PHP中进行洗牌。为什么不呢?在SQL中,它在很大程度上取决于DBMS如何洗牌数据,因此纯SQL解决方案会使其不易移植。谢谢@ThorstenKettner。你的解决方案非常适合我的需要。你知道,我总是说“把它放在dbms一边”,但在这种情况下,我认为你是对的。如果将优化器保留在应用程序端,那么使用奇怪的ORDERBY子句来破坏优化器的可能性也较小。另外,我认为PHP7提高了一些数组函数的性能…@Sebas肯定有道理,数据库已经有了自己的琐事。少做一件家务就更好了。