2010-10-27 38 views
3

我试图找到一种方法来拉10条随机记录,然后按字段排序这10条记录。我曾尝试以下:通过随机和字段排序MySQL查询?

SELECT名来自用户的ORDER BY RAND(),名称限制10

,但它不名10行的顺序返回,只返回10个随机记录中的任何命令。有没有一种方法可以通过rand()和MySQL查询中的字段进行排序?

回答

1

结束了只是在PHP中进行排序。

8
SELECT name 
FROM (
     SELECT name 
     FROM users 
     ORDER BY 
       RAND() 
     LIMIT 10 
     ) q 
ORDER BY 
     name 
+0

我一直希望有一个不涉及子查询的解决方案,因为实现子查询会很困难 – ryanzec 2010-10-27 12:56:04

+0

@ryanzec:子查询中有什么困难? – Quassnoi 2010-10-27 13:09:12

+0

那么查询是通过一个复杂的过程使用一堆不同的表单值创建的,并且也正在被解码以便为表单字段生成值。不是说不能这样做,但我将不得不计算得到生成的查询如何正确(我不是谁在第一时间创建此查询生成过程中的一个),然后确保它不破的解码该查询(使用一堆正则表达式)。只是希望这将是不到一天的解决方案(可能最终做在MySQL中随机排序,并在PHP领域排序) – ryanzec 2010-10-27 13:57:31