0

我有一个将 csv 文件上传到 mysql 数据库的 php 脚本。

数据库有几列。这些列中有一个“电子邮件”字段。我写了一些 mysql 来删除 email 列中包含重复值的行。下面是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 表。

4

1 回答 1

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);
于 2012-06-18T17:10:27.663 回答