0

我有两个 MySQL 表。一张桌子是奖品列表​​,另一张桌子是获奖者列表。可以有多种类型的奖品可用。

  • 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 回答