重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

SQL初心者です。

以下の抽出方法でどのようにSQLを作成したらよいのか悩んでいます。

(TABLE1)
営業所,顧客番号,氏名
1000,000001,田中太郎
1000,000002,山下次郎
1000,100001,佐藤三郎
2000,000003,村井四郎

(TABLE2:処理前)
営業所,顧客番号,氏名
1000,000001,田中太郎

TABLE1とTABLE2を比較します。
TABLE1のデータのうち、営業所が1000、顧客番号が000001~099999(先頭がゼロ)のものを絞り出し、
TABLE1にしか存在しないものをTABLE2に追記するプログラムを作りたいのですが、
組み方が分からなくて悩んでします。

(TABLE2:処理後)
営業所,顧客番号,氏名
1000,000001,田中太郎
1000,000002,山下次郎

TABLE2(処理後)のような結果を出したいのですが、
どのように構築したらいいのでしょうか。e

A 回答 (4件)

INSERT INTO TABLE2(営業所, 顧客番号, 氏名)


SELECT 営業所, 顧客番号, 氏名 FROM TABLE1
WHERE 営業所 = '1000' AND 顧客番号 BETWEEN '000001' AND '099999'
AND NOT EXISTS(SELECT * FROM TABLE2
WHERE TABLE1.営業所 = TABLE2.営業所 AND TABLE1.顧客番号 = TABLE2.顧客番号)

(顧客番号が営業所なしでユニークならサブクエリ内の営業所の条件は省略可)
    • good
    • 2
この回答へのお礼

ありがとう

詳しい構文にて回答していただき、ありがとうございました。
顧客番号がユニークではないため、営業所条件は必要となりますので、
参考にさせていただき実行できるか試してみます。

お礼日時:2018/07/26 16:59

> 営業所+顧客番号でユニーク



であれば、以下でいけませんか?

insert ignore into TABLE2
select * from TABLE1 where
営業所='1000' and '顧客番号' between '000001' and '099999'
    • good
    • 1
この回答へのお礼

回答して頂き、ありがとうございました。
imsert ignore~でも追加できそうです。勉強になります。

お礼遅くなってしまい、申し訳ございませんでした。

お礼日時:2018/07/30 23:13

SQLの種類によってやり方は異なります


提示してください
またtable2の顧客番号にunique属性がついているか否かで処理が異なります
    • good
    • 0
この回答へのお礼

回答していただき、ありがとうございました。

DB環境はORACLEです。
営業所+顧客番号でユニークとなっています。

お礼日時:2018/07/26 17:01

テーブル1をその条件で絞り込んで、その結果とテーブル2をunionしたらいいんじゃないの?

    • good
    • 0
この回答へのお礼

回答していただき、ありがとうございました。
SELECTまででしたら教えていただいた内容で対応できそうです。

お礼日時:2018/07/26 16:55

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

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