2012-04-10 7 views
1

2つのテーブル間のクエリ基本(編集HeidiSQL)SQL - 私はMYSQLに知っていただきたいと思います

私は2つのテーブル(メール&スパム)2列(ID、EMAIL)を持っていると私は私のデータベースをきれいにしたい: セット操作で使用するテーブル

       EMAIL 

            x y 
          ------------------ 
            1 [email protected]  
            2 [email protected]  
            2 [email protected]  
            3 [email protected]  

           SPAM 

            x z 
          ------------------ 
            1 [email protected]  
            2 [email protected]  
            4 [email protected]  

USUALLY EXCEPTを使用しますが、MYSQLでは機能しません。

proc sql; タイトル 'EMAIL EXCEPT SPAM' select * from sql.EMAIL select * from sql.SPAM;最初のクエリ結果にされた行を生産

       EMAIL EXCEPT SPAM 

            x y 
          ------------------ 
            3 [email protected]  

(EXCEPT)私はEXISTS、NOT WHERE使用しようが、私は知りません。

クエリを作るために私を助けることができます:

SELECT * EMAIL ... FROM ????

感謝の

答えて

2
SELECT * FROM EMAIL WHERE y NOT IN (SELECT z FROM SPAM) 
+1

パーフェクト感謝のをEXISTS、NOT WHERE使用するようにしてください – user1324059

2

左外側動作するはずスパムにヌルで参加。

SELECT E.* 
FROm EMAIL E 
LEFT JOIN SPAM S 
    ON E.Email = S.Email 
WHERE S.Id IS NULL 
0

普段はEXCEPT使用しますが、それはMYSQLでは動作しません。

EXCEPTは、mySQLではサポートされていません。明示的なALL | DISTINCTキーワードがない場合、EXCEPTはデフォルトでEXCEPT DISTINCTになります。したがって回避策では、SELECTの既定値がSELECT ALLであるため、SELECT DISTINCTを明示的に使用する必要があります。

私は

SELECT DISTINCT y 
    FROM EMAIL 
WHERE NOT EXISTS (SELECT * 
         FROM SPAM 
        WHERE y = z); 
関連する問題