0

私は次のmysqlクエリを持っています:

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

私が欲しいのは、賞を与えるためにランダムなユーザーを選択し、その後、その賞を賞のテーブルから削除したいです。
同じクエリでそれを行うことは可能ですか?どうすればいいですか?

編集:ロジックは、勝者と賞品を表示し、可能であれば結果を他のテーブルに挿入し、その後、他の誰かが同じ賞品を獲得できないようにするためにテーブルから賞品を削除することです。

4

2 に答える 2

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
于 2013-03-10T23:31:33.310 に答える
0

いいえ:1つのクエリでSELECT、INSERT、およびDELETEを実行することはできません。これら3つの操作すべてをアトミックに処理する場合は、トランザクションを使用します(つまり、すべてが実行されるか、いずれかが失敗した場合、他の操作はロールバックされます)。

于 2013-03-10T23:46:52.803 に答える