php - MySQL向列插入重复单词的数量

标签 php mysql sql

我有一个包含重复单词的表格和一个名为“num”的空字段。

+----+--------------+-----+
| id | words        | num |
+----+--------------+-----+
| 1  | red          |     |
+----+--------------+-----+
| 2  | blue         |     |
+----+--------------+-----+
| 3  | red          |     |
+----+--------------+-----+
| 4  | red          |     |
+----+--------------+-----+
| 5  | blue         |     |
+----+--------------+-----+

我想像这样在 num 字段中插入重复单词的数量:

+----+--------------+-----+
| id | words        | num |
+----+--------------+-----+
| 1  | red          | 1   |
+----+--------------+-----+
| 2  | blue         | 1   |
+----+--------------+-----+
| 3  | red          | 2   |
+----+--------------+-----+
| 4  | red          | 3   |
+----+--------------+-----+
| 5  | blue         | 2   |
+----+--------------+-----+

我如何通过 php 或 sql 执行此操作?

最佳答案

这适用于 MySQL

您可以加入一个子查询,它使用相关子查询根据 ID 在每个 words 上生成一个行号。

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

关于php - MySQL向列插入重复单词的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18948038/

相关文章:

php - WordPress 菜单放置在标题之外

php - 如何连接多个 MySQL 查询

php - CakePhp 中包含 600 000 多行的表

php - 延长类(class)是好的做法吗?

java - 用于序列化 Base64 编码的 Java 对象的 LONGTEXT 或 BLOB

php - 获取 MYSQL 中非数字 ID 的上一条和下一条记录

mysql - 如何在执行左连接之前排除一些记录

mysql - LEFT OUTER JOIN 只选择一行

python - 按日期查询排序的唯一文本消息对象 Django ORM

MySQL触发器不更新表