2013-04-16 78 views
1

我想將隨機數存儲在一個MySql表中,隨機檢索一個並在每次創建新記錄時將其插入另一個表列。我想從隨機數字表中刪除檢索到的數字。在創建新記錄時將隨機數插入到表中

隨機數字是3位數字,其中有900位數字。

我已經閱讀了幾篇文章,描述了使用唯一隨機數並觸發其插入的問題。我想使用這種方法,因爲它似乎是可靠的,同時產生很少的問題。

任何人都可以在這裏給我一個SQL查詢的例子,將完成上述? (如果sql查詢不是推薦的方法,請隨時推薦更好的方法。)

感謝您提供任何幫助。

我這裏放在一起的兩個建議,並試圖此觸發器和查詢:

CREATE TRIGGER rand_num before 
INSERT ON uau3h_users FOR EACH ROW 
insert into uau3h_users (member_number) 
select random_number from uau3h_rand900 
where random_number not in (select member_number from uau3h_users) 
order by random_number 
limit 1 

但似乎已經有連接到該表中的觸發器,因此新會導致衝突,事情停止工作,直到我刪除它。任何有關如何使用另一種方法實現相同的想法?

回答

1

您只處理900條記錄,所以性能不是主要問題。

如果你正在做一個插入表中,你可以做類似如下:

insert into t(rand) 
    select rand 
    from rand900 
    where rand not in (select rand from t) 
    order by rand() 
    limit 1 

換句話說,你不必不斷地從一個表中刪除,並移動到其他。您可以選擇插入不存在的值。如果性能是一個問題,那麼在這種情況下索引將會有所幫助。

+0

每次有人註冊事件時,都會在用戶表中創建新記錄。一個隨機數將被分配給每個新用戶供以後使用。我需要確保沒有分配重複號碼,因此需要從池中刪除分配的號碼。 – tk748

+0

當你用完所有號碼時,你的計劃是什麼? –

+0

這些數字可以從事件重用到事件,這樣就不會出現問題。 – tk748

相關問題