【问题标题】:Is it possible to order "first n" records randomly with only one SELECT?是否可以仅使用一个 SELECT 随机排序“前 n”条记录?
【发布时间】:2013-09-17 13:38:24
【问题描述】:

有没有办法在没有两次选择的情况下做到这一点?

原始查询

SELECT name,view_count  
FROM `ex`.`item` 
where status='available' order by view_count asc 
limit 40;

随机显示

SELECT * 
FROM (SELECT name,view_count  
      FROM `ex`.`item` 
      where status='available' 
      order by view_count asc 
      limit 40 ) AS temp 
ORDER BY RAND();

这可以在没有第二次选择的情况下完成吗?

【问题讨论】:

  • 我认为没有比您的第二个SELECT 更好的方法了。为什么你认为这是个问题?
  • @Barmar 我没有,我只是想看看是否有任何替代方案,如果有的话如何:)
  • 我能想到的唯一选择是将第一个查询的所有结果读入客户端应用程序中的一个数组,然后打乱该数组。

标签: mysql sql random sql-order-by


【解决方案1】:

试试这个:

SQL 小提琴:http://sqlfiddle.com/#!2/330f8/2

SELECT name, view_count 
FROM `ex`.`item` 
where status='available' 
order by rand(), view_count asc limit 40;

【讨论】:

    猜你喜欢
    • 2016-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-15
    • 1970-01-01
    相关资源
    最近更新 更多