0

MySQLテーブルが2つあります。1つの表は賞品のリストで、もう1つの表は受賞者のリストです。賞品には複数の種類があります。

  • id
  • 名前
  • 利用可能

勝者

  • 名前
  • Prize_id

賞品が3つあり、現在その賞品が2つしかリストされていない場合はprize_id、次の受賞者を挿入します。

私はこのクエリを試しました:

INSERT INTO winner (name, prize_id) 
SELECT 'steve', 1
FROM winner, prize
WHERE (select if(count(w.id) < p.available, 1, 0) as `valid` 
       from prize p, winner w 
       where p.id = 1 and w.prize_id = p.id) = 1

これに切り詰めると、一種の作業になりますが、prizeテーブルに存在するのと同じ数の行が挿入されます

INSERT INTO prize (name, prize_id)  
SELECT 'steve', 1 
FROM winner   
WHERE 1 = 1;

これを機能させる方法はありますか?

4

1 に答える 1

1

これを試して ::

INSERT INTO winner (name, prize_id) 
SELECT tempwinner.name , tempwinner.prize_id
from
(Select 
column1, column2
    FROM winner inner join prize p on (w.prize_id = p.id)
    WHERE p.id = 1 and count(w.id) < p.available
) tempwinner
于 2012-12-11T18:58:09.147 に答える