我正在處理一個我從來沒有做過的查詢,並且我一直在堅持如何繼續。我想成爲一個插入命令。使用子查詢插入到表中
我想要做的僞代碼是這樣的:
For each player
insert into CurrentHand table by getting x number of cards needed
so all the players have 10 cards in their hands.
所以,如果玩家1將獲得7張新卡,如果他有在自己手中3張牌。如果他手上有5張牌,Play 2將獲得5張新牌。
到目前爲止,我已經看到了這個select語句,但感覺就像我使用了錯誤的方法。
DECLARE @MaxHandCount int
SET @MaxHandCount = 10
SELECT Player.PlayerId
, (SELECT COUNT(1) FROM CurrentHand WHERE PlayerId = Player.PlayerId AND IsUsed = 0) AS CurrentHandCount
, (@MaxHandCount - (SELECT COUNT(1) FROM CurrentHand WHERE PlayerId = Player.PlayerId AND IsUsed = 0)) AS NeededHandCount
, CardId
FROM Player, AvailableCard
WHERE Cardid IN (SELECT CardId FROM CurrentHand WHERE IsUsed = 0)
ORDER BY PlayerId
表結構如下:
Player
- PlayerId
AvailableCard
- CardId
- CardValue
CurrentHand
- PlayerId
- CardId
- IsUsed
非常感謝。
「IsUsed」標誌的用途是什麼?你使用什麼版本的SQL Server?請正確標記問題。 – TomT 2014-11-06 22:07:22
服務器爲MS Sql Server 2012. IsUsed的用途是跟蹤哪些卡已經播放過,以便以前播放的卡不會再次被選中。 – 2014-11-06 22:17:05