【发布时间】:2015-02-23 18:46:29
【问题描述】:
我到处搜索以找到一个 SQL 查询来随机选择行而不更改顺序。几乎每个人都使用这样的东西:
SELECT * FROM table WHERE type = 1 ORDER BY RAND() LIMIT 25
但是上面的查询改变了顺序。我需要一个在行中随机选择但不更改顺序的查询,因为每条记录也有一个日期。
【问题讨论】:
我到处搜索以找到一个 SQL 查询来随机选择行而不更改顺序。几乎每个人都使用这样的东西:
SELECT * FROM table WHERE type = 1 ORDER BY RAND() LIMIT 25
但是上面的查询改变了顺序。我需要一个在行中随机选择但不更改顺序的查询,因为每条记录也有一个日期。
【问题讨论】:
选择随机行,然后重新排序:
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。
【讨论】: