[英]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.