1

我有以下表结构(在 MySQL 中):

DocID, Code, IsDup, DopOf

DocID唯一性在哪里。

价值观是这样的:

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

我想要的是编写一个可以更新表并给出所需结果的过程:

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

IsDupDoc在 的 基础 上显示 是否重复Code, 并DupOf标明 原DocId.

有谁能够帮助我?我正在尝试实现逻辑,但我被卡住了。

您的帮助将不胜感激。

谢谢。

4

1 回答 1

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)

如果您的表是InnoDB并且docId是 a PRIMARY KEY,则您应该在(code).

于 2009-05-19T10:15:43.360 回答