アプリ版:「スタンプのみでお礼する」機能のリリースについて

同じテーブルが2つあります。
それぞれには、データが入っており、

その二つのテーブルから、SQLで
不一致レコードを取得したい
と思っています。

すみませんがいい方法がありましたら,
教えてください。

A 回答 (5件)

こんにちわ。


#2 のmuyoshid です。

確かにMysql では、MINUS 演算子はサポートされていないようですね。
そうなると、こういった処理を行う必要がどの程度あるかですね。
あまり頻繁にあるようであれば、こういった機能をサポートしている
データベースに乗り換えるのが良いと思います。

それ程でもない場合ですが、
1) 自作ツールを作成する。
2) A, B 表のデータを差分レコードの検索を行えるデータベースに一度移行
  して、検索結果をMysql に取り込む。

1) についてですが方法として、
  1. A表, B表と同じ形式のC表を用意。
  2. A表から1レコード取り出す。
  3. 取り出したデータがB表にあるか確認。
  4. B表に一致するデータが無ければC表にデータをInsert。
  5. A表のデータを全て処理するまで、2. 以降を繰り返す。
と言うプログラムを書く事になると思います。
データ件数にもよりますが、大量の検索が行われるのでプログラム実行中に
他のプログラムの性能劣化が心配ですが・・・。

一時的に他のデータベースを使用する程度であれば、ユーザ登録 (無料) が
必要ですが、US OTN にOracle の開発ライセンスが置いてありますので、
こちらをDownload されてはいかがでしょうか?
※ サポートを受ける事はできませんが、取りあえず無料で使用できます。

参考URL:http://technet.oracle.com/
    • good
    • 0

MySQLでは NOTは 使えるようですね。


条件に対して NOTというのは できるのかな?
つまり 一致する条件 以外ということで・・・。
    • good
    • 5

こんにちは。

maruru01です。

データベースがわからないので、一般的なものを。

SELECT * FROM テーブルA
WHERE NOT EXISTS (SELECT * FROM テーブルB WHERE テーブルA.判断するフィールド = テーブルB.判断するフィールド)

または、

SELECT * FROM テーブルA
WHERE 判断するフィールド NOT IN (SELECT 判断するフィールド FROM テーブルB WHERE テーブルA.判断するフィールド = テーブルB.判断するフィールド)

この回答への補足

すみません。ACCESSはなれていないので、
MySQLにデータをインポートして、MySQLで
処理させようとしています・・・。

で、調べたところによりますと、
NOT EXISTSと
NOT IN
は使えない模様です。。。

補足日時:2002/11/08 18:04
    • good
    • 0

こんにちわ。



お使いのデータベースが何か記載されていないので、確実な事は言えませんが、
Oracle であればMINUS 演算子が使えると思います。
Select * from a minus select * from b;
とすると、A 表から戻されるが、B 表からは戻されない行が返されます。

この回答への補足

すみません。ACCESSです。
なので、MINUSは使えませんでした・・・

補足日時:2002/11/08 17:50
    • good
    • 0

キーとなる項目で抽出条件を以下のようにしてあげればいいかと思います。



WHERE句で
Aのテーブル.キー項目<>Bのテーブル.キー項目

複数テーブルのSELECTは、できるものと前提して記述しています。
    • good
    • 0

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

関連するカテゴリからQ&Aを探す