我有一个SELECT查询,我期待数百万的结果。我需要在MySQL中随机化这些结果。在查询之后在我的脚本中执行此操作显然使用了太多RAM。有人可以重做这个查询,以便结果都是随机的,而不使用rand()的顺序?我已经看到了一些示例并尝试使用它们,但它们对我不起作用,因为它们似乎都依赖于返回整个表而不是使用WHERE子句。这是我的疑问:
SELECT * FROM pool
WHERE gender = 'f'
AND (`location` = 'united states' OR `location` = 'us' OR `location` = 'usa');
答案 0 :(得分:0)
如果您可以使用其他语言,例如php,您可以使用其rand()
函数生成ID并将其添加到查询中,如
$ids = range($mini, $maxid);
shuffle($ids);
array_slice($ids, 0, $quantity);
或者您正在使用的任何语言类似的东西。
如果你需要在纯mysql查询中执行此操作,那么这里有一些替代方案:http://www.electrictoolbox.com/msyql-alternative-order-by-rand/
答案 1 :(得分:0)
如果你有1000万行ID,它们是否在一个连续的范围内?