我有两个MySQL表。一个表是奖品列表,另一个表是获奖者列表。可以有多种类型的奖品。
奖
赢家
如果有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;
我有办法让这个工作吗?
答案 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