2013-03-10 51 views
0

我有以下MySQL查詢:
MySql的隨機選擇,並在相同的查詢刪除

SELECT u.name AS nume, p.premiu AS premiu 
FROM fbusers AS u, premii AS p 
ORDER BY RAND() 
LIMIT 1 

我要的是選擇一個隨機的用戶給了一個獎,事後我想刪除獎的這個獎項表。
可以在同一個查詢中做到這一點?我應該如何繼續?

編輯:邏輯是顯示獲勝者和獎品,如果可能將結果插入到其他表格中,然後從表格中刪除獎品以便其他人無法贏得相同獎品。

+0

如果這兩個查詢始終是邏輯在一起,你可以只包他們在一個存儲過程中。 – fuzic 2013-03-10 23:22:23

+0

獎品是否也是隨機的,或者您是否按照定義的順序將它們分配給隨機用戶? – eggyal 2013-03-10 23:25:04

+0

獎品也是隨機的,我把所有的獎品都放在一張桌子上,它會隨機選擇(用戶和獎品)。 – user1820705 2013-03-10 23:27:07

回答

0

不,你不能做SELECT,INSERT和在一個查詢中刪除。如果你想用原子處理所有這三個操作使用交易(即它們都將被執行,或者如果任何一個出現故障,其他人將被回滾)

0

當然可以,但我不明白的邏輯,因爲這裏沒有有關信息誰贏左:

DELETE price FROM price 
    JOIN (SELECT u.name AS nume, p.premiu AS premiu 
    FROM fbusers AS u, premii AS p 
    ORDER BY RAND() 
    LIMIT 1) a 
ON price.premiu = a.premiu 
+0

謝謝,這是我的錯,我沒有解釋清楚。邏輯是顯示獲勝者和獎品,如果可能的話將結果插入其他表格中,然後從表格中刪除獎品,以免其他人獲得相同的獎品。 – user1820705 2013-03-10 23:38:20