繁体   English   中英

为什么 SQL LIMIT 子句为每个查询返回随机行?

[英]Why does SQL LIMIT clause returns random rows for every query?

这是一个非常简单的查询。 对于每个查询,我都会得到不同的结果。 当我使用TOP 1时会发生类似的事情。 我想要一个随机的子样本并且它有效。 但我错过了什么吗? 为什么每次都返回不同的值?

SELECT DISTINCT user_id FROM table1 
where day_id>="2009-01-09" and day_id<"2011-02-16"
LIMIT 1;

不能保证您的查询会得到随机结果。 您每次很可能会得到相同的结果(尽管返回的实际结果是不确定的)。 为了保证你得到一个随机的、唯一的user_id ,你应该从DISTINCT值列表中SELECT一个随机值:

SELECT user_id
FROM (SELECT DISTINCT user_id 
      FROM table1 
      WHERE day_id >= "2009-01-09" AND day_id < "2011-02-16"
      ) u
ORDER BY RAND()
LIMIT 1

SQL 语句表示无序集合,添加order by子句如

...
ORDER BY user_id
LIMIT 1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM