查找重复记录,删除它们,排序并重新编号MySQL数据库中的所有记录

时间:2012-11-16 23:39:24

标签: php mysql

以下php代码在数据库中查找欺骗记录,删除所有类似记录(但其中一个没有),按时间顺序重新排序所有数据,最后逐步将所有行(id字段)从1重新编号到ñ

问题:当我执行此代码时,会发生表格“mytable”在“tmp”中更改,一切都会停止并出错。

为什么这样?我该如何解决这个问题?

 $creatmp = mysql_query("CREATE TABLE tmp AS SELECT * FROM mytable WHERE 1 GROUP BY name, surname, birthdate"); 
 $cancqsos = mysql_query("DROP TABLE mytable"); 
 $datmpaqsos = mysql_query("ALTER TABLE tmp RENAME TO mytable"); 

 $creariordinoid = mysql_query("CREATE TABLE riordinoid LIKE mytable");
 $popolariordinoid = mysql_query("INSERT INTO riordinoid SELECT * FROM qsos ORDER BY birthdate");
 $svuotacampoid = mysql_query("ALTER TABLE `riordinoid` DROP `id`");
 $ricontauno = mysql_query("ALTER TABLE `riordinoid` AUTO_INCREMENT = 1");
 $ricontadue = mysql_query("ALTER TABLE `riordinoid` ADD `id` int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;");
 $svuotaqsos = mysql_query("DROP TABLE mytable");
 $rinominariordinoid = mysql_query("ALTER TABLE riordinoid RENAME TO mytable");

1 个答案:

答案 0 :(得分:0)

最简单的方法是在每次查询后测试所有mysql_query()和echo mysql_error()的返回值。

如果你知道哪个陈述出错了,为什么,你可以决定如何解决它。

我之前提出的问题是,为什么在使用表格tmp进行此额外步骤时,为什么稍后将其替换为另一个表格riordinoid

进一步观察,复制表时WHERE 1ORDER BY birthdate没有任何意义。