mysql - 可以同时创建主键和自增吗?

标签 mysql sql

我有一列要修改为主键和自动递增。它有一些好的值(都是唯一的)和一些 NULL 值。我不能自动递增它,因为它不是主键,我也不能让它成为主键,因为它没有自动递增以给 NULL 一些值。

我该如何解决?

例子:

1   |data...
2   |data...
3   |data...
NULL|data...
NULL|data...

最佳答案

首先您需要将那些NULL 值设置为唯一的行ID,然后您可以使用AUTO_INCREMENT 将行更改为PRIMARY KEY

尝试这样的事情:

SET @lastID = 3;  -- The highest value in your table, MAX(rowID)

UPDATE mytable
    SET rowID = (@lastID := @lastID+1)
    WHERE rowID IS NULL;

这应该“修复”NULL 并将它们设置为值。然后你可以制作 key :

ALTER TABLE mytable
    MODIFY rowID INT NOT NULL PRIMARY KEY AUTO_INCREMENT;

关于mysql - 可以同时创建主键和自增吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27807590/

相关文章:

mysql - 与使用完整的 MySQL 相比,使用独立的 SQL 文件是否有风险?

mysql - 在 MySQL 中管理分层数据

SQL - 获取下一个和上一个 X 记录

sql - 在交易中设置时间戳

MySql查询需要很长时间

php - 如何在mysql数据库中插入像 "Pyrénées, France'”这样的字符串?

mysql - Symfony4/Doctrine - 无法通过 SSL 连接(DBAL 配置)

MySQL 5.7 - 查询以将 JSON 键的值设置为 JSON 对象

mysql - Laravel 获取分配给我的用户的订单(具有分配历史记录)

sql - 选择sql xquery中所有记录的所有元素x的不同列表