Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.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
Php MySQL:修复完全重复的行_Php_Mysql - Fatal编程技术网

Php MySQL:修复完全重复的行

Php MySQL:修复完全重复的行,php,mysql,Php,Mysql,我有表标记,在创建时忘记将id列设置为主键 现在我面临一个重复的关键问题 标签表: 如何删除重复项并将id保留和设置为主键 预期结果:新的必需标签表 我认为最简单的方法是使用数据创建一个临时表,然后重新加载数据: create temporary table tags_temp as select distinct id, text from tags; truncate table tags; alter table tags add primary key (id);

我有表标记,在创建时忘记将id列设置为主键

现在我面临一个重复的关键问题

标签表:

如何删除重复项并将id保留和设置为主键

预期结果:新的必需标签表


我认为最简单的方法是使用数据创建一个临时表,然后重新加载数据:

create temporary table tags_temp as
    select distinct id, text
    from tags;

truncate table tags;

alter table tags add primary key (id);

insert into tags(id, text)
    select id, temp
    from tags_temp;

我认为最简单的方法是使用数据创建一个临时表,然后重新加载数据:

create temporary table tags_temp as
    select distinct id, text
    from tags;

truncate table tags;

alter table tags add primary key (id);

insert into tags(id, text)
    select id, temp
    from tags_temp;

我要做的是创建一个新表,添加键插入旧表中的数据,然后删除标记并重命名temp


我要做的是创建一个新表,添加键插入旧表中的数据,然后删除标记并重命名temp

首先,我创建了您的表并将数据插入:

我只备份不同的条目:

我不再需要原始表,因此我将其从数据库中删除:

我重命名以前的备份表:

现在是向表中添加主键约束的时候了:

现在,让我们测试一下我们所做的是否正确。首先,让我们显示数据:

create temporary table tags_temp as
    select distinct id, text
    from tags;

truncate table tags;

alter table tags add primary key (id);

insert into tags(id, text)
    select id, temp
    from tags_temp;
让我们尝试添加id为4的行:

结论:我们所做的是正确的。

首先,我创建了您的表,并将数据插入:

我只备份不同的条目:

我不再需要原始表,因此我将其从数据库中删除:

我重命名以前的备份表:

现在是向表中添加主键约束的时候了:

现在,让我们测试一下我们所做的是否正确。首先,让我们显示数据:

create temporary table tags_temp as
    select distinct id, text
    from tags;

truncate table tags;

alter table tags add primary key (id);

insert into tags(id, text)
    select id, temp
    from tags_temp;
让我们尝试添加id为4的行:


结论:我们所做的是正确的。

我想删除重复,而不是选择我想删除重复,而不是选择我收到此错误:1064-您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第行“添加主键id”附近要使用的正确语法1@mwafi . . . 它需要表名,oops。我收到这个错误:1064-您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第行“添加主键id”附近要使用的正确语法1@mwafi . . . 它需要表名,oops。
mysql> select * from tags;
+----+-------+
| id | text  |
+----+-------+
|  1 | man   |
|  2 | ball  |
|  2 | ball  |
|  2 | ball  |
|  3 | love  |
|  3 | love  |
|  4 | heart |
|  4 | heart |
+----+-------+
8 rows in set (0.00 sec)
mysql> create table T as select distinct * from tags;
Query OK, 4 rows affected (0.27 sec)
Records: 4  Duplicates: 0  Warnings: 0
mysql> drop table tags;
Query OK, 0 rows affected (0.12 sec)
mysql> rename table T to tags;
Query OK, 0 rows affected (0.08 sec)
mysql> alter table tags add  primary key(id);
Query OK, 0 rows affected (0.48 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> select * from tags;
+----+-------+
| id | text  |
+----+-------+
|  1 | man   |
|  2 | ball  |
|  3 | love  |
|  4 | heart |
+----+-------+
4 rows in set (0.00 sec)
mysql> insert into tags values(4,'proof');
ERROR 1062 (23000): Duplicate entry '4' for key 'PRIMARY'