2016-12-29 9 views
2

MySQLで別のテーブルの既存エントリに応じてエントリを追加しようとしましたが、 "解決策"(前に質問したことがあります)MYSQLパート2で別のテーブルの既存のエントリに応じてエントリを追加

Add an entry depending on existing entry in another table with MYSQL

は、ここで私は必要なテーブルとインポートデータを作成し、私のクエリです:...私のデータに正常に動作し、なぜ私にはわからない。ここ

は、私はから解決策を持っている質問です。

CREATE TABLE `EMailImport` (user_id VARCHAR(20), `E-Mail` VARCHAR(150)); 
LOAD DATA LOCAL INFILE 'C:/Users/xyz/Desktop/X/export.csv' 
INTO TABLE `EMailImport` 
FIELDS TERMINATED BY ';' 
LINES TERMINATED BY '\n'; 
DELETE FROM `EMailImport` LIMIT 1; 
CREATE INDEX X ON `EMailImport` (`E-Mail`); 
CREATE TABLE ABC AS SELECT customerID, ordernumber, `customersEmail` 
FROM orders GROUP BY `customersEmail`; 
CREATE INDEX Y ON ABC (`customersEmail`); 
ここで

(私は解決策を使用している)私が試した2つのクエリは、次のとおりです。

SELECT ABC.*, CASE WHEN `customersEmail` IN (SELECT `E-Mail` FROM EMailImport) THEN 'Yes' ELSE 'No' end AS `Did the customer ordered already?` FROM ABC; 

SELECT ABC.*,CASE WHEN EXISTS (SELECT * FROM EMailImport WHERE EMailImport.`E-Mail` = ABC.`customersEmail`) then 'yes' else 'no' end as `Did the customer ordered already?` from ABC; 

が働いている両方が、彼らは(正しくないもの)、「いいえ」のすべてのエントリのための私を見る:どこ間違いはあります/問題?

Info:表ABCの列のデータ型は次のとおりです。customerID = int(10); ordernumber = varchar(50)、customersEmail = varchar(255);

+0

ABCに有効なデータが含まれていますか? –

+0

はい、約300.00エントリ/行 – AbsoluteBeginner

答えて

0

LEFT JOINとCOALESCEではこれがはるかに簡単ですか?

SELECT ABC.*, 
    CASE WHEN EMailImport.`E-Mail` IS NULL THEN 'No' ELSE 'Yes' END 
    AS `Did the customer ordered already?` 
FROM ABC LEFT JOIN EMailImport on EMailImport.`E-Mail` = ABC.customersEmail 

、列名などのそれの真ん中に-E-Mailなどの用語を使用しないでくださいしてください。列名と表名にはすべて小文字を使用してください。 ABC

注文番号などの数値列は、数値(この場合はint)で、varcharではなく数値である必要があります。

Did the customer ordered already?のような最後の長い列のエイリアスはめったに使用されません。これは、表示時にアプリケーション層で行われたことです。

+0

このようにも見えません:間違いがどこにあるのか分かりません... – AbsoluteBeginner

+0

「作業していません」という用語を使用しないでください。何が起こったのかを明確に説明する。 – e4c5

+0

OK、申し訳ありません - CASE WHEN EMailImportという名前の3番目の列があります。 'E-Mail'はNULLです。'いいえ 'ELSE' YES 'ENDこの列のすべての項目は、いいえです。テーブルABCのEMailaddressがEMailImportに存在していることを確認してください) – AbsoluteBeginner

関連する問題