2013-02-12 195 views
1

我正在處理需要後端服務的項目。我正在使用MySQL和PHP腳本來實現與服務器端的通信。我想在後臺添加一項新功能,那就是每天從table_members中自動生成一個包含3個「幸運」成員的表格的功能。換句話說,我希望MySQL從表中選擇3個隨機行並將這些行添加到另一個表(如果可能的話)。我明白,如果手動調用該表上的RAND()函數,我可以實現這一目標,但......會很痛苦!從表中自動選擇隨機行

有什麼辦法可以達到上述目的?

UPDATE:

這是我對這個解決方案後的意見/建議從其他用戶

CREATE EVENT `draw` ON SCHEDULE EVERY 1 DAY STARTS '2013-02-13 10:00:00' ON COMPLETION NOT PRESERVE ENABLE DO 
INSERT INTO tbl_lucky(`field_1`) 
SELECT u_name 
FROM tbl_members 
ORDER BY RAND() 
LIMIT 3 

我希望這是有益的,給別人。

+0

我的建議是創建三個隨機密鑰,然後使用SQL IN子句從這三個密鑰中獲取數據。 – 2013-02-12 22:49:02

+2

'... rand()limit 3'有什麼問題? – 2013-02-12 22:49:06

+0

使用MySQL事件調度程序和隨機選擇3 ...每天的過程,並插入... – xQbert 2013-02-12 22:49:23

回答

1

您可以使用INSERT ... SELECT,並選擇3行ORDER BY RAND()LIMIT 3

有關INSERT的詳細信息... SELECT語句 - see

也有可能這每天的工作與MySQL Events自動化(自5.1.6起可用)

+0

工作正常!謝謝你的幫助。只是一個小問題。我試圖在INSERT INTO之前有TRUNCATE TABLE ...,但是出於某種原因我在第1行出現語法錯誤。我嘗試通過phpMyAdmin手動嘗試,並且正在工作(首先要求確認)。任何想法如何解決這個事件? – OutOfBoundsException 2013-02-13 00:10:07