MySQL 仅向具有不同值的表添加索引

标签 mysql sql database

我有一个如下所示的表:http://sqlfiddle.com/#!9/e39c3e/1

我的目标是让 SID 看起来像名称 + 索引。 因此,当我 select * from Person 时,它应该有一个输出:

Name        SID
Bruno       Bruno1
Carl        Carl2
Carl        Carl2
Danielle    Danielle3

我尝试使用 auto_increment 制作另一列的索引,但当然这不会按照我想要的方式工作。

最佳答案

编写一个子查询,为每个不同的名称分配一个递增的数字。将其与 UPDATE 查询中的表连接起来。

UPDATE Person AS p1
JOIN (
    SELECT name, CONCAT(name, @index := @index + 1) AS newSID
    FROM (SELECT DISTINCT name
          FROM Person
          ORDER BY name) AS p2
    CROSS JOIN (SELECT @index := 0) AS var
) AS p2 ON p1.name = p2.name
SET p1.SID = p2.newSID

DEMO

关于MySQL 仅向具有不同值的表添加索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49638892/

相关文章:

mysql - 使用 SQL 清除非字母数字值

MYSQL根据不同条件对列进行分组查询

mysql - 优化 mysql Join 查询与日期排序

MySQL 返回表名和数据库中所有表的字段数据

sql - MYSQL Select语句Order By和Group By

mysql - 如何将html页面连接到mysql数据库?

java - 阻塞、锁定和隔离级别之间的关系是什么?

无法识别 SQL 加载程序日期格式

mysql - 如何仅更新 MySQL 中 DATETIME 字段的小时数?

Sql 触发器 - 它属于哪个表?