MySQL插入重复的单词到列的数量

Hos*_*ein 0 php mysql sql

我有一个带有重复单词的表和一个以"num"命名的空字段.

+----+--------------+-----+
| id | words        | num |
+----+--------------+-----+
| 1  | red          |     |
+----+--------------+-----+
| 2  | blue         |     |
+----+--------------+-----+
| 3  | red          |     |
+----+--------------+-----+
| 4  | red          |     |
+----+--------------+-----+
| 5  | blue         |     |
+----+--------------+-----+
Run Code Online (Sandbox Code Playgroud)

我想在num字段中插入重复单词的数量,如下所示:

+----+--------------+-----+
| id | words        | num |
+----+--------------+-----+
| 1  | red          | 1   |
+----+--------------+-----+
| 2  | blue         | 1   |
+----+--------------+-----+
| 3  | red          | 2   |
+----+--------------+-----+
| 4  | red          | 3   |
+----+--------------+-----+
| 5  | blue         | 2   |
+----+--------------+-----+
Run Code Online (Sandbox Code Playgroud)

我怎么能用php或sql做到这一点?

Joh*_*Woo 5

这是为了MySQL.

您可以加入一个子查询,该子查询words根据ID使用的相关子查询生成每个rownumber .

UPDATE  tableName a
        INNER JOIN
        (
            SELECT  a.id, 
                    (
                        SELECT  COUNT(*)
                        FROM    tableName c
                        WHERE   c.words = a.words AND
                                c.id <= a.id
                    ) AS RowNumber
            FROM    TableName a
        ) b ON a.id = b.id
SET     a.num = b.rownumber
Run Code Online (Sandbox Code Playgroud)