0

私のデータベースには、SOURCE と TARGET という同一の構造を持つ 2 つの MySQL テーブルがあります。

この 2 つを結合するために使用している外部キーは、列「email」です。

基本的に、TARGET には検証済みの電子メールのリストのみが含まれます。これは、SOURCE 内の電子メールのサブセットであり、電子メールからキーオフされた他のアドレス データも含まれます。有効な電子メールを含むすべてのレコードを SOURCE から取得する必要があります。シンプルですね。MySQLにこれをさせることができないようです...

これが私のクエリです:

SELECT
  email,
  firstname,
  lastname,
  address,
  city,
  state,
  zip,
  phone
FROM Source 
WHERE email IN
  (SELECT email FROM Target);

これを行うと、レコードがゼロになります。それでも私はそれが機能することを知ってSELECT email FROM Targetおり、SOURCE に電子メールが含まれていることを知っています。

MySQL Workbench 5.2.34 でこれを実行しようとしています。クエリはエラーなしで実行されますが、出力は生成されません。(そして、サーバーが実行されていることなどを知っています)

4

2 に答える 2

1

あなたのコードは問題なく動作します。データを確認せずに問題の原因を特定することはできませんが、表示されていない他の問題がある可能性があります。

ワーキングフィドル:

http://sqlfiddle.com/#!2/7d505/1

スキーマ:

Create table Source(
  email varchar(30),
  firstname varchar(30),
  lastname varchar(30),
  address varchar(30)
);

Create table Target(
  email varchar(30)
);


Insert into Source (email, firstname, lastname, address) VALUES('jack@gmail.com', 'jack', 'smith', '123 pine lane');
Insert into Source (email, firstname, lastname, address) VALUES('fake@gmail.com', 'fake', 'name', '456 pine street');

Insert into Target (email) VALUES('jack@gmail.com');

クエリ:

SELECT
  email,
  firstname,
  lastname,
  address
FROM Source 
WHERE email IN
  (SELECT email FROM Target);

結果:

jack@gmail.com  jack    smith   123 pine lane
于 2013-04-08T01:59:25.347 に答える