0

csv ファイルを mysql データベースにアップロードする php スクリプトがあります。

データベースにはいくつかの列があります。これらの列の中には「メール」フィールドがあります。email 列に重複した値を含む行を削除する 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");

コードは機能し、重複する値を削除します。

問題:

値を含まない行を削除します。そのため、空の 2 つ以上の email 値が重複していると想定し、それらが行であることを削除します。

質問:

空の値を無視するように mysql に指示するにはどうすればよいですか。

助けてくれてありがとう。

編集

私のデータベーステーブルはどこですか。1 つのテーブル。when は、コードを実行するときです。オンデマンドで実行されるphpファイルを入れる予定です。私が期待する結果は、重複した電子メールのない mysql テーブルです。

4

1 に答える 1

0

このようなものは、電子メールでNULLを許可し、UNIQUE制約を追加することにより、1回限りの変更で機能します。

-- 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 に答える