重复数据删除mysql表但忽略空值

时间:2012-06-18 17:02:28

标签: php mysql

我有一个php脚本,可以将csv文件上传到mysql数据库中。

数据库有几列。这些列中有一个“电子邮件”字段。我写了一些mysql,它会删除电子邮件列中包含重复值的行。下面是mysql:

 $sql = "CREATE TABLE new_table as SELECT * FROM auto WHERE 1 GROUP BY email";

mysql_query($sql, $conn);

$query = mysql_query("SELECT COUNT(*) FROM new_table");
list($number) = mysql_fetch_row($query);

$query = mysql_query("SELECT COUNT(*) FROM auto");
list($number2) = mysql_fetch_row($query);
$result = $number2 - $number;
mysql_query("DROP TABLE auto");
mysql_query("RENAME TABLE new_table TO auto");

代码有效,它会删除重复的值。

问题:

删除不包含值的行。因此,它假设两个或多个空的电子邮件值是重复的,并删除它们是行。

问题:

如何告诉mysql忽略空值。

感谢您的帮助。

修改

我的数据库表在哪里。一张桌子。 什么时候我执行代码。我计划放入一个php文件,按需执行。 我期望的结果是没有重复电子邮件的mysql表。

1 个答案:

答案 0 :(得分:0)

这样的东西适用于一次性更改,允许在电子邮件中使用NULL,并添加UNIQUE约束:

-- set empties to NULL
UPDATE tablename SET email = NULL WHERE LENGTH(email)=0;
-- drop all rows violating the UNIQUE constraint on email:
ALTER IGNORE TABLE tablename ADD UNIQUE (email);