随机选择行而不更改sql查询中的顺序

时间:2014-12-26 12:51:31

标签: sql select random

我到处搜索,找到一个SQL查询,随机选择行而不改变顺序。几乎每个人都使用这样的东西:

SELECT * FROM table WHERE type = 1 ORDER BY RAND() LIMIT 25 

但是上面的查询更改了顺序。我需要一个在行中随机选择但不改变顺序的查询,因为每个记录也都有一个日期。

1 个答案:

答案 0 :(得分:2)

选择随机行,然后重新排序:

select t.*
from (select *
      from table t
      where type = 1
      order by rand()
      limit 25
     ) t
order by datecol;

在SQL中,如果要按特定顺序排列行,则需要使用显式order by子句。您永远不应该依赖于没有order by的结果排序。 SQL不保证订购。 MySQL不保证排序,除非查询具有order by