【发布时间】:2011-04-02 02:35:51
【问题描述】:
我正在尝试从具有 category_id = 0(其中 category_id = 0)约束的表中选择随机 n 个元素。之前,我使用概率流采样来做到这一点,因为它不会扫描每个元素。
但是,有没有办法通过额外的 where 约束来做到这一点?
拉出所有元素然后随机选择n个元素是没有意义的,因为表格有数百万行。
我之前没有额外约束的查询粘贴在下面。
SELECT *
FROM (SELECT @cnt := COUNT(*) + 1, @lim := %s
FROM table) vars
STRAIGHT_JOIN (SELECT *,
@lim := @lim-1
FROM table
WHERE (@cnt := @cnt - 1) AND RAND() < @lim / @cnt) drv_tbl
【问题讨论】: