按随机和字段排序 MySQL 查询?

Posted

技术标签:

【中文标题】按随机和字段排序 MySQL 查询?【英文标题】:Ordering MySQL Query By Random and a Field? 【发布时间】:2010-10-27 11:32:15 【问题描述】:

我正在尝试找到一种方法来提取 10 条随机记录,然后按字段对这 10 条记录进行排序。我尝试了以下方法:

SELECT name FROM users ORDER BY RAND(), name LIMIT 10

但它不按名称排序,返回 10 行,只是以任意顺序返回 10 条随机记录。有没有办法通过 rand() 和 mysql 查询中的字段进行排序?

【问题讨论】:

【参考方案1】:
SELECT  name
FROM    (
        SELECT  name
        FROM    users
        ORDER BY
                RAND()
        LIMIT 10
        ) q
ORDER BY
        name

【讨论】:

我希望有一个不涉及子查询的解决方案,因为实现子查询会很困难 @ryanzec:子查询有什么困难? 这个查询是通过一个复杂的过程使用一堆不同的表单值创建的,并且还被解码以生成表单字段的值。并不是说它不能完成,但我必须弄清楚如何正确生成查询(我不是首先创建此查询生成过程的人),然后确保它不会破坏解码查询(使用一堆正则表达式)。只是希望不到一天的解决方案(可能最终在 MySQL 中进行随机排序,在 php 中进行字段排序) @ryanzec:只有10 值,在PHP 一侧进行排序可能会更好。【参考方案2】:

最后只是在 php 中进行排序。

【讨论】:

以上是关于按随机和字段排序 MySQL 查询?的主要内容,如果未能解决你的问题,请参考以下文章

mysql 查询时 按照某个字段计算后的值 排序?

mysql 如何 多表连查 按时间到排序

MySQL查询时,怎么排除某个字段查询

mysql 如何 多表连查 按时间到排序

MySQL 性能优化:按日期时间字段排序

sq 语句 查询两个表 并按时间字段排序