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 に答える