插入MySQL - IF t1.count(*)< t2.available

时间:2012-12-11 18:47:26

标签: mysql select insert

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

  • 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;

我有办法让这个工作吗?

1 个答案:

答案 0 :(得分: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