2つのテーブルから条件に一致しない行のみ抜き出しCSV
か他のテーブルに抜き出す処理を作ろうと思っています。
そこで質問なのですが、以下の2つのテーブルから
条件に一致しないコードのみ抜き出すSQL文などありますか?
-----------------------------------------
マスターテーブル
コード、ネーム1、ネーム2、店コード
1、あ、い、6
2、う、え、8
3、お、か、4
4、き、く、2
店コードテーブル
店コード、店区分
1、スーパー
2、コンビニ
3、デパート
4、ホームセンター
------------------------------------------
条件は、マスターテーブルの店コードが店コードテーブルに存在
しないデータのみ抽出です。
抽出結果は、以下の様にしたいです。
1、あ、い、6
2、う、え、8
このような考え大丈夫でしょうか?
SELECT *
FROM マスターテーブル AS M INNER JOIN 店コードテーブル AS S
ON M.店コード = S.店コード
わかりずらい質問ですがよろしくお願いします。
No.2ベストアンサー
- 回答日時:
このような考え大丈夫でしょうか?
SELECT *
FROM マスターテーブル AS M INNER JOIN 店コードテーブル AS S
ON M.店コード = S.店コード
店コードが一致するレコードを抽出しているのですね。
はい、大丈夫です。
もっとも単純に、分かりやすい式を書くのであれば
この条件否定なので
left outer join で結合して、結合できなかったデータ、
つまり、店がNullのデータを取れば抽出できます。
SELECT *
FROM マスターテーブル AS M left outer join 店コードテーブル AS S
ON M.店コード = S.店コード
where S.店コード is null
または、
SELECT *
FROM マスターテーブル as M
where M.店コード not in ( select 店コード from 店コードテーブル)
等でいけるでしょう。
ただ、参考URLにもありますように、
is null とか not in は遅いです。(Indexで見れなくなるので)
大量データを扱うような場合や、速度が求められるような場合は
別途クエリを検討しましょう。
参考URL:http://www.geocities.jp/mickindex/database/db_op …
No.1
- 回答日時:
>SELECT *
>FROM マスターテーブル AS M INNER JOIN 店コードテーブル AS S
>ON M.店コード = S.店コード
上記のようにINNER JOINしてしまうと、両テーブルに存在する店コードの行のみ選択されます。
外部結合を行って、マスターテーブルの全行を戻し、WHERE句で店コードテーブル側に存在しない(IS NULLを指定)行を選択します。
または、以下のように「not in」「not exists」を使う方法もあります。
select M.*
from マスターテーブル AS M
where M.店コード not in (select 店コード from 店コードテーブル AS S);
select M.*
from マスターテーブル AS M
where not exists (select 店コード from 店コードテーブル AS S WHERE M.店コード = S.店コード);
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
好きなおでんの具材ドラフト会議しましょう
肌寒くなってきて、温かい食べ物がおいしい季節になってきましたね。 みなさんはおでんの具材でひとつ選ぶなら何にしますか? 1番好きなおでんの具材を教えてください。
-
チョコミントアイス
得意ですか?不得意ですか?できれば理由も教えてください。
-
「これはヤバかったな」という遅刻エピソード
寝坊だったり、不測の事態だったり、いずれにしても遅刻の思い出はいつ思い出しても冷や汗をかいてしまいますよね。
-
昨日見た夢を教えて下さい
たまにすごいドラマチックな夢見ること、ありませんか? 起きてからも妙に記憶に残っているような、そんな夢。
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
【SQL】他テーブルに含まれる値に合致する行を抽出
その他(データベース)
-
GROUP BYを行った後に結合したい。
Oracle
-
SQL文のwhere条件文で使う <> の意味はなんですか
その他(データベース)
-
-
4
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
5
SQLで特定の項目の重複のみを排除した全項目を取得する方法
その他(プログラミング・Web制作)
-
6
ORA-01013のエラーについて経験のある方お願いします。
Oracle
-
7
SQLで、Join句で結合したテーブルにデータが無い場合について
SQL Server
-
8
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
9
CASE文のエラーについて
Oracle
-
10
Excelで数値→文字列変換で指数表示になったものをいっぺんに直したい
Excel(エクセル)
-
11
2つの列が同じ値の行を取得するSQL
Oracle
-
12
2つの項目が重複するレコードを抽出する方法はありますか?
MySQL
-
13
MAX関数を使ってからLEFT JOINしたいのですが・・
PHP
-
14
DataTableに特定のフィールドが存在するかどうか調べるには?
Visual Basic(VBA)
-
15
updateでグループ化
SQL Server
-
16
データベース関係で、データの洗い替えとはどのような事を行うことでしょう
IT・エンジニアリング
-
17
データベースのINT型項目にNULLはNG?
MySQL
-
18
datetime型でNULL値を入れたい。
SQL Server
-
19
count集計の結果が0の場合でも表示したい
SQL Server
-
20
オラクルのUPDATEで複数テーブル
Oracle
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「マスタ」と「テーブル」の違...
-
重複するキーから一番古い年月...
-
続.ORACLEのSELECTのソートに...
-
2つのテーブルから条件に一致...
-
ACCESSのコンパイルエラーについて
-
SQL文で2つのSELCT文の結果を...
-
sqlのupdate文で質問です。 テ...
-
ACCESSのSQLで、NULLかNULLでな...
-
mysql IN句に1データだけ指定...
-
accessのエクスポートエラーに...
-
アクセス 日付抽出(年月のみ)...
-
accessテーブル作成クエリを実...
-
ACCESS 一番最新の日付の金額...
-
2つの項目が重複するレコード...
-
実行時エラー3086 削除クエリ...
-
3つ以上のテーブルをUNIONする...
-
SELECT時の行ロックの必要性に...
-
SELECT文でタイムアウト...
-
SQLServerで同一条件レコードの...
-
インデックスの再構築の意味っ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「マスタ」と「テーブル」の違...
-
2つのテーブルから条件に一致...
-
重複するキーから一番古い年月...
-
ACCESS 一つのフィールドに複...
-
行方向のデータを横に並べる
-
PLSQLの識別子エラー
-
Accessでフィールドを比較した...
-
主キーの変更
-
Inner join と Left joinの明...
-
続.ORACLEのSELECTのソートに...
-
商品コード番号を入力すると商...
-
SQL 2つのテーブルとSUBSTRING...
-
ACCESSのコンパイルエラーについて
-
自分自身への矢印
-
ACCESS2000でDCount関数の使い方
-
Accessユニオンクエリーで2つ...
-
請求と入金のテーブルの作成の...
-
OracleのUnion内でそれぞれのOr...
-
VIEWでテーブルの集計結果...
-
【Access初心者】最大値と次に...
おすすめ情報