-PR-
締切済み

SQLを教えてください!!

  • すぐに回答を!
  • 質問No.35451
  • 閲覧数170
  • ありがとう数5
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 50% (2/4)

テーブルAとテーブルBがあり、両方に存在しないものを抽出してエラーとする処理を行いたいのですが、
どういうSQlを書いたらいいのか教えてください。
下記例としてテーブルにデータがあったとしたら、結果として
004 商品D
005 商品E
006 商品G
というデータを抽出したいのですが・・

テーブルA             テーブルB
-------------        -----------------------
コード  商品名 NO コード   商品名
001商品A        1 001 商品A
002商品B        2 001  商品A
003商品C        3 002   商品B
004商品D        4 003 商品C
006商品G        5 003 商品C
                6 005 商品E
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全3件)

  • 回答No.3
レベル10

ベストアンサー率 42% (79/186)

ちょっと試したことがないのでわかりませんが、次のようなのはどうでしょう

(select キー1,キー2 from A
minus
select キー1,キー2 from B)
union
(select キー1,キー2 from B
minus
select キー1,キー2 from A)


  • 回答No.1

select * from テーブルA
where コード not in (select コード from テーブルB)
union
select * from テーブルB
where コード not in (select コード from テーブルA)
Group by 1,2
order by 1

環境によってマチマチではないかと思うのですが
(order by 1 が使えないとか・・・・)
算出するSQL概念はこれでいいかと思います。
お礼コメント
NYANMARU

お礼率 50% (2/4)

ありがとうございました。
私は、NOT EXISTSを考えたのですが、ご回答頂いた方が効率がいいみたいですね。助かりました! さっそく使わせて頂きます。
投稿日時 - 2001-02-02 12:48:02
  • 回答No.2
レベル10

ベストアンサー率 42% (79/186)

条件にもよりますが、not inよりもnot existのほうが処理速度が速くなるときがありますよ。(索引データ件数による)
お礼コメント
NYANMARU

お礼率 50% (2/4)

すいません!
やってみたのですが、エラーが出て動きません!
GROUP BYで式が設定されていませんとなってしまいます。(BYオラクル)
又、キーが例では、1項目だけだったのですが、複数で成り立つ場合も作りたいので合わせて教えてください。
投稿日時 - 2001-02-14 16:46:12
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


専門家があなたの悩みに回答!

-PR-

ピックアップ

-PR-
ページ先頭へ