dポイントプレゼントキャンペーン実施中!

mysqlでUSER_TABLとUSER_CHK_TABL一致しないデータ全てを出力したいのですがmysqlだと『NOT EXISTS』が使えないので困ってます。

TABLE構造はUSER_TABLとUSER_CHK_TABLも下記です。
create table USER_TABL (USERNAME varchar(255),MAIL_ADDRESS varchar(255));

oracleならこんな感じかと思ったのですが。。。
select * from USER_TABL
where NOT EXISTS (select * from USER_CHK_TABL)

A 回答 (2件)

>ご回答頂いたSQLはUSER_TABLに存在しUSER_CHK_TABLに存在しないレコードが全て抽出可能ですか?



はい。
LEFT JOIN をして、USER_CHK_TABLに該当するレコードがない場合、カラムの値がNullになることを利用したSQLです。

>お互いのTABLEに存在しないレコードの抽出する事も可能ですか?

#1のSQLのテーブルを逆にしたら、
「USER_CHK_TABL に存在し、USER_TABL に存在しないレコードを抽出」はできます。
UNION がつかえれば、くっつけておしまいなんでしょうけど。
それ以外の方法は残念ながら思いつきません。
    • good
    • 0

USER_CHK_TABL に存在し、USER_TABL に存在しないレコードは抽出しなくていいのなら。



SELECT *
FROM USER_TABL LEFT JOIN USER_CHK_TABL
ON USER_TABL.USERNAME=USER_CHK_TABL.USERNAME AND USER_TABL.MAIL_ADDRESS=USER_CHK_TABL.MAIL_ADDRESS
WHERE USER_CHK_TABL.USERNAME IS NULL

この回答への補足

ご回答ありがとうございます。

||>USER_CHK_TABL に存在し、USER_TABL に存在しないレコードは抽出しなくていいのなら

ご回答頂いたSQLはUSER_TABLに存在しUSER_CHK_TABLに存在しないレコードが全て抽出可能ですか?
また、お互いのTABLEに存在しないレコードの抽出する事も可能ですか?

補足日時:2006/01/17 18:20
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!