2012-01-15 58 views
0

我正在制作一个抽奖程序,我希望这个人的名字是随机的,但不要重复任何记录。我在下面的两个查询中进行选择。第一个是可以肯定的是,从返回的结果中没有重复的记录,但牺牲了身份证号码较高的人,因为他们不会被选中。第二个是随机的,但可能会选择重复记录。有没有其他方法可以在mysql或php中实现随机记录而不重复任何返回的结果?在mysql中随机化结果

$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()"); 
+0

没有,第二definitly没有选择重复的结果。 – TimWolla 2012-01-15 14:39:13

+0

请注意:'ORDER BY RAND()'非常昂贵。如果你的表增长[这个问题可能会有所帮助](http://stackoverflow.com/questions/1244555/how-can-i-optimize-mysqls-order-by-rand-function) – Wrikken 2012-01-15 14:39:31

回答

5

如何添加DISTINCT

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

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