1

下面是一个示例结构:

table `pligg`
#id   #alpha     #num
1       a        null
2       b        null
3       c        null
4       a        null
5       d        null
6       b        null
7       a        null
8       e        null

我想在一个 mysqli 查询之后像这样更新数据库:

table `pligg`
#id   #alpha     #num
1       a        1
2       b        1
3       c        1
4       a        2
5       d        1
6       b        2
7       a        3
8       e        1

我想要做的是num用重复的数量更新列。我试过这个查询,但徒劳无功

UPDATE pligg SET 'num' = COUNT(DISTINCT alpha) WHERE 'id'<id
4

1 回答 1

4

这应该可以解决问题:

UPDATE pligg a
INNER JOIN
(
    SELECT a.id, a.alpha, COUNT(1) AS dup_cnt
    FROM pligg a
    INNER JOIN pligg b ON a.id >= b.id AND a.alpha = b.alpha
    GROUP BY a.id, a.alpha
) b ON a.id = b.id
SET a.num = b.dup_cnt

SQLFiddle 演示

于 2012-07-28T11:22:35.610 回答