2009-05-19 40 views
1

我有(在MySQL)在以下表結構:如何在MySQL中給定組中標記重複項?

DocID, Code, IsDup, DopOf 

,其中DocID是獨一無二的。

值是這樣的:

​​

我想要的是寫可更新表,並得到期望的結果的過程爲:

 
1,AAAA,0,0 
2,AAAA,1,1 
3,AAAA,1,1 
4,BBBB,0,0 
5,CCCC,0,0 
6,CCCC,1,5 

IsDup節目是否Doc是重複或不在Code, 和DupOf的基礎上表示原始DocId

任何人都可以幫助我嗎?我試圖實現邏輯,但我卡住了。

您的幫助將不勝感激。

謝謝。

回答

3
UPDATE table t 
JOIN (
     SELECT code, MIN(docId) AS firstdoc 
     FROM table 
     GROUP BY 
       code 
     ) q 
ON  t.code = q.code 
SET  t.isDup = NOT (t.docId = q.firstdoc), 
     t.dupOf = CASE WHEH t.docId = q.firstdoc THEN 0 ELSE q.firstDoc END 

如果你的表是MyISAM,你應該有(code, docId)的索引。

如果您的表格是InnoDBdocIdPRIMARY KEY,您應該有一個索引(code)

+0

感謝Quassnoi ...烏爾答案真的很有幫助。 :-) – 2009-05-20 05:50:41