mysql - mysql中重复记录的编号(二)

标签 mysql sql

我有这个表,(sequence_No.)字段是null:

ID        Name      age     sequence_No.
--        -----     ---     ------------
1         sara      20         
2         sara      20           
3         sara      20         
4         john      24         
5         john      24         
6         Hama      23         

我想更新成这样:

ID        Name      age     sequence_No.
--        -----     ---     ------------
1         sara      20         1
2         sara      20         2
3         sara      20         3
4         john      24         1
5         john      24         2
6         Hama      23         1

mysql 中哪个查询可以做到这一点?

谢谢

最佳答案

您可以在 mysql 中使用相关子查询来模拟 ROW_NUMBER()。带有序列号的结果表将与表本身连接,并使用生成的数字更新 sequence_No 的值。

UPDATE  tableName a
        INNER JOIN
        (
            SELECT  A.ID, 
                    (
                        SELECT  COUNT(*)
                        FROM    tableName c
                        WHERE   c.Name = a.Name AND
                                c.ID <= a.ID) AS sequence_No
            FROM    TableName a
        ) b ON a.ID = b.ID
SET     a.sequence_No = b.sequence_No

关于mysql - mysql中重复记录的编号(二),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18609291/

相关文章:

php - 在 PHP 中检索值

mysql - 如何将我的应用程序连接到kubernetes mysql statefulset

mysql - 在另一列mysql中显示结果集值

sql - 如何从一个表中获取与另一个表中的所有值匹配的记录

mysql - 使用连接从 MySQL 数据库中选择 2 列

sql - 为什么每个字段在 SQL Server 2014 中显示三次而不是一次值

php - 关于某些模板的数组排列

c# - 由于某种原因,这些列从整个数据库添加到 listbox1,尽管只需要从 Students 表中获取

PHPBB登录脚本

sql - 如何从工资表中找到第三或nᵗʰ最高工资?