我到处搜索,找到一个SQL查询,随机选择行而不改变顺序。几乎每个人都使用这样的东西:
SELECT * FROM table WHERE type = 1 ORDER BY RAND() LIMIT 25
但是上面的查询更改了顺序。我需要一个在行中随机选择但不改变顺序的查询,因为每个记录也都有一个日期。
答案 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
。