2012-12-11 39 views
0

我有兩個MySQL表。一張桌子是獎品列表​​,另一張桌子是獲獎者名單。可以有多種獎品可供選擇。插入MySQL - 如果t1.count(*)<t2.available

  • 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

試試這個::

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 
相關問題