我有一个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表。
答案 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);