这是一个非常简单的查询。对于每个查询,我都会得到不同的结果。当我使用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