こんにちは:私のmarketingImportテーブルから私のhardBounceテーブルに存在しない電子メールだけを取得するのに苦労します。MySQL(OSX)LEFT JOINが期待通りに動作しない
私はLEFT JOINにさまざまなアプローチを試みましたが、私は常にmarketingTable(すべて300Kレコード)を取得しています。私のhardBounceテーブルには約80Kの「悪い」電子メールがあるので、220Kレコードしか取得できません。これらは私の結果から除外されるべきです。
また、WHEREをANDで置き換えてみました(ON句の一部にする)が、同じ結果が得られました。
これは私のSQLです:
SELECT marketingImport.email FROM marketingImport
LEFT JOIN hardBounce ON marketingImport.email = hardBounce.email
WHERE hardBounce.email IS NULL;
テーブル:
-marketingImportはVARCHAR(255)であるフィールド '電子メール' を含んでいる、NULL可能インデックス
-hardBounceは、単一のフィールドが含まれています「電子メール」はvarchar(255)、ヌル可能なUNIQUEインデックス(PKではない)
私は何が欠けていますか?私はすべての記事を読んだ...そして、私の目は今水を汲んでいる...
ありがとう。
NOT IN/NOT EXISTS/IS NULL条件を無視して、すべてのレコードを正しい表から戻すことをお勧めします。パフォーマンスは、NOT IN、LEFT JOIN、NOT JOINを使用する方が最良です。しかし、私はまだ結果を得ていません:( –
ミステリーが解決しました。私のhardBounceテーブルの電子メールフィールドは、80K全部に '0D'私はLEFT JOINに固執していますが、私はLEFT JOINを使用していますが、 (MySQL上で)広告として動作しています... –
これは非常によく聞こえますが、以下の2つのクエリがうまくいかなかったので、データ問題であったはずだと思いました!)嬉しいです並べ替えられた... LEFT JOINはおそらくこれのための良い選択です。 – Nerdwood