Php mysql中的随机化结果

Php mysql中的随机化结果,php,mysql,sql,Php,Mysql,Sql,我正在做一个抽奖活动,我希望这个人的名字是随机的,但不要重复任何记录。我在下面两个查询中进行选择。第一种方法是确保不会从返回的结果中重复任何记录,但会牺牲id较高的人,因为他们不会被选中。第二种是随机的,但可能会选择重复的记录。有没有其他方法可以在不重复任何返回结果的情况下在mysql或php中实现随机记录 $select_random = $db->get_results("SELECT person FROM tbl_people WHERE state = 1 LIMIT $off

我正在做一个抽奖活动,我希望这个人的名字是随机的,但不要重复任何记录。我在下面两个查询中进行选择。第一种方法是确保不会从返回的结果中重复任何记录,但会牺牲id较高的人,因为他们不会被选中。第二种是随机的,但可能会选择重复的记录。有没有其他方法可以在不重复任何返回结果的情况下在mysql或php中实现随机记录

$select_random = $db->get_results("SELECT person FROM tbl_people WHERE state = 1  LIMIT $offset, 30");

$select_random = $db->get_results("SELECT participant FROM tbl_participants WHERE state = 1 ORDER BY RAND()");

添加
DISTINCT

$select_random = $db->get_results("SELECT DISTINCT person FROM tbl_people WHERE state = 1  LIMIT $offset, 30");


添加
DISTINCT

$select_random = $db->get_results("SELECT DISTINCT person FROM tbl_people WHERE state = 1  LIMIT $offset, 30");


不,第二个肯定不会选择重复的结果。另一方面:
orderbyrand()
是出了名的昂贵。如果您的表增长为否,则第二个表肯定不会选择重复的结果。另一方面:
orderbyrand()
是出了名的昂贵。如果你的桌子变大了