2016-06-28 62 views
3

我有一個是從下面的SELECT語句號召觀點:如何重置表

SELECT [Position], [TeamName], [Played], [Wins], [Loss], [Draws], [Points], [Goals_Scored], [Goals_Against], [Goal_Difference], [LeagueID] 
FROM League_Table 
WHERE LeagueID = @LeagueID 
ORDER BY Points DESC, Goal_Difference DESC; 

該輸出如下所示名次表。

enter image description here

我有一個if語句來檢查,如果達到每隊總場比賽(這意味着本賽季結束),然後(這是我卡上的部分),只需刷新表所以一切都重新開始。

IF (SELECT MIN(Played) FROM dbo.League_Table WHERE LeagueID = @LeagueID) > @TotalMatches 

我的問題是重置排名表的最佳方法是什麼?下面是它應該是什麼樣子後刷新一個例子:

enter image description here

+1

UPDATE TableName SET Played = 0,Wins = 0,Loss = 0等 –

+0

表有大數據嗎? – NEER

+0

你實際上想刪除所有的歷史數據,只剩下一個團隊列表?還是你想要一個新的聯盟ID與所有相同的球隊? –

回答

2

如果這個表有大型數據集,我想插入到一個新表,並重新插入到該會執行得更快:

sp_rename dbo.League_Table, dbo.League_Table_old; -- rename old table 

CREATE TABLE dbo.League_Table AS (.....); -- create same table 

INSERT INTO dbo.League_Table 
SELECT t.leagueID,t.teamName,0,0,0,0,0,null,null,null 
FROM dbo.League_Table_old t --insert values to new table 
+0

謝謝你的回答Sagi。一個小問題,你如何在舊錶名的末尾設置一個增量,以便對於每個舊的聯賽表,它在最後包含一個數字以保持名稱的唯一性? –

+0

不知道我在跟着..請更改這個問題 – sagi

+0

你說過把聯賽表重命名爲dbo.League_Table_old,這很好,但如果我完成另一個賽季,我會有另一個dbo.League_Table_old。有沒有辦法讓dbo.League_Table_old1和dbo.League_Table_old2? –