我有一个很大的MySQL用户表,需要从中获取六个随机行(我正在使用PHP)。该表具有自动递增的索引列。唯一的问题是某些行被标记为非活动状态,因为某些用户已禁用其帐户或其他任何行。这意味着我不能只计算行数,然后从该范围中获取一个随机数,因为其中一些将处于非活动状态。
如何在不使用RAND()且不尝试查询非活动用户的情况下有效获取随机行?
谢谢!
答案 0 :(得分:3)
WHERE `inactive` = 0 LIMIT random_offset, 1
其中random_offset
在PHP中预先计算(从1到COUNT
活跃用户随机)。结果包含6个UNION
个查询。
答案 1 :(得分:1)
如果您希望通过RAND()方法避免非常慢的订单,这里有各种替代方案,有各种管理漏洞的选项