2011-09-27 120 views
1

我有一個表A(ID INT,比賽VARCHAR,代碼字符,狀態=字符)的SQL Server:失敗的額外記錄

ID Match code Status 
101 123 A 
102 123 B 
103 123 C 
104 234 A 
105 234 B 
106 234 C 
107 234 B 
108 456 A 
109 456 B 
110 456 C 

我想填充狀態 '失敗' 時: 對於同一場比賽中,存在與(A,B或C) 不同的代碼或代碼存在多次。 換句話說,代碼可以只有(A,B,C),它應該只存在一個用於相同的匹配,否則失敗。因此,預期的結果將是:

ID Match code Status 
101 123 A NULL 
102 123 B NULL 
103 123 C NULL 
104 234 A NULL 
105 234 B NULL 
106 234 C NULL 
107 234 B FAIL 
108 456 A NULL 
109 456 B NULL 
110 456 C NULL 

感謝

+0

SQL Server或MySQL的 - 你打成問題之一,它標記另一個? –

+0

對不起SQL SERVER 2008 –

回答

3

在這裏效率不保證...

update tableA 
set status = 'FAIL' 
where ID not in (
    select min(ID) 
    from tableA 
    group by Match, code)