2012-01-15 90 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()");