Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 所有列值都将被删除_Mysql_Database - Fatal编程技术网

Mysql 所有列值都将被删除

Mysql 所有列值都将被删除,mysql,database,Mysql,Database,现在,TableId\u int列中1000条记录的值相同,等于1 当我在MYSQL工作台编辑器中同时运行以下三条SQL语句时 针对数据库“Mydb”和表“Mytable” 除列TableId\u int中的记录外,所有记录都将被删除。我可以看到 列TableId\u int中的值,从1到1000,用于1000条记录,但不包括所有其他记录 列值被删除并且为空,这是我不希望看到的。我想保留所有其他的 列值保持不变 请让我知道我做错了什么 我的回答是指以下内容。在那里,人们建议 将TableId\u

现在,
TableId\u int
列中1000条记录的值相同,等于
1
当我在MYSQL工作台编辑器中同时运行以下三条SQL语句时 针对数据库“Mydb”和表“Mytable”

除列
TableId\u int
中的记录外,所有记录都将被删除。我可以看到 列
TableId\u int
中的值,从
1
1000
,用于1000条记录,但不包括所有其他记录 列值被删除并且为空,这是我不希望看到的。我想保留所有其他的 列值保持不变

请让我知道我做错了什么

我的回答是指以下内容。在那里,人们建议 将
TableId\u int
设置为自动递增键是最好的选择,但我已经有了另一个选项 表列设置为主键并自动递增,因此MySQL不允许设置 另一个自动增量

请告诉我该怎么办


谢谢

是,
REPLACE
执行
删除
,然后执行
插入
。如果不为其他列指定值,则插入部分无法推断它们的值,并且除了主键之外,它不会使用以前的值

我假设
TableId\u int
是主键或唯一键,这意味着将替换具有相同值的现有行。即先删除,然后插入

您只需使用
更新
即可:

UPDATE (SELECT @a:=0) A, Mydb.Mytable B SET B.TableId_int = (@a:=@a+1);

但我必须指出,看起来您正在尝试将主键值重新编号为连续的。不建议这样做,也没有必要这样做。自动递增主键值需要唯一,但不需要连续。它们不是行号,它们只标识每一行。存在删除、回滚、插入失败等漏洞是正常的。

TableId\u int
不是主键。它的数据类型是
int(20)UN
UPDATE (SELECT @a:=0) A, Mydb.Mytable B SET B.TableId_int = (@a:=@a+1);