2017-08-30 8 views
1

から両方の値を持たない行を返す:MySQLはここではデータだ二つのテーブル

tbl_apples

Name | Fruit 
+=========+========+ 

    James | Apple 
    Marie | Apple 

tbl_bananasは

Name | Fruit 
+=========+========+ 

    James | Banana 
    Timothy | Banana  
    Kevin | Banana 

私はしませんでしたすべての名前を返すようにしたいですリンゴまたはバナナの両方を購入する。だから、この場合、ジェームズを除いてみんながそうです。大量のデータセット(数百万ドル)に対してこれを行う簡単な方法はありますか?可能であれば、私はバナナではなくリンゴを購入した人、またはリンゴではなくバナナを購入した人を戻すことができるようにしたいと考えています。 EDIT:バナナデータとリンゴデータが2つの異なるテーブルに格納されていることが分かったので、結合が必要なように見えます。では、どうやってそれらをまとまって表示し、次にどちらか一方のみを買った人を見つけ出すことができますか?

+0

あなたが道をさらに問題になるかもしれない何のPRIMARY KEYを持っていないように見えます。 – Strawberry

+0

私は簡単のためにPRIMARY KEYを残しました。私は正しい方向に理論的なプロダクトをもっと探していた – buttpee

+0

ヒント:絶対にPKを外してはいけません! – Strawberry

答えて

0

あなたは、テーブルを統一することでこれを行うことができます。

select t.name 
from (
    select a.name, 'Apple' as fruit 
    from tbl_apples a 
    union 
    select b.name, 'Banana' as fruit 
    from tbl_bananas b) t 
group by t.name 
having count(distinct fruit) < 2 
関連する問題