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で質問しましょう!
似たような質問が見つかりました
- Oracle SQL update方法 2 2022/06/22 14:07
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- Visual Basic(VBA) 配列にしたセル範囲でのコメントがあるかどうかを取得するコードの書き方 2 2022/09/17 05:09
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- MySQL 複数DBテーブルからのデータ取得 3 2022/05/17 15:02
- Oracle sqlで質問です。 idを元にidに紐付くデータで住所コードがjpのみのデータ以外のidを取得したい 4 2023/03/20 17:41
- Oracle sqlで質問です。 Aテーブルの情報をBテーブルに更新かけたいです。 やりたいことは、Bテーブルの受 1 2023/05/17 11:17
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
【SQL】他テーブルに含まれる値に合致する行を抽出
その他(データベース)
-
GROUP BYを行った後に結合したい。
Oracle
-
2つの列が同じ値の行を取得するSQL
Oracle
-
-
4
SQLで、Join句で結合したテーブルにデータが無い場合について
SQL Server
-
5
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
6
SQLで特定の項目の重複のみを排除した全項目を取得する方法
その他(プログラミング・Web制作)
-
7
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
8
SQL Left Join で重複を排除するには
SQL Server
-
9
重複していないレコードの抽出方法について
MySQL
-
10
2つのテーブルをLIKE演算子のように結合させたい
その他(データベース)
-
11
副問合せの書き方について
SQL Server
-
12
ROWNUMでUPDATEをしたいのですが・・・。
Oracle
-
13
SQL、2つのテーブルで条件一致したものだけdeleteする方法は?
Oracle
-
14
データベース関係で、データの洗い替えとはどのような事を行うことでしょう
IT・エンジニアリング
-
15
テーブルレーコードをソートして更新するにはどうしたらいいでしょうか?
SQL Server
-
16
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
17
SQLServerでNULLを挿入したいです
SQL Server
-
18
テーブルの存在チェックについて
Oracle
-
19
Where句のNot条件をAnd条件にしたい!
Oracle
-
20
MAX関数を使ってからLEFT JOINしたいのですが・・
PHP
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「マスタ」と「テーブル」の違...
-
2つのテーブルから条件に一致...
-
重複するキーから一番古い年月...
-
商品コード番号を入力すると商...
-
PLSQLの識別子エラー
-
ACCESS 一つのフィールドに複...
-
Inner join と Left joinの明...
-
請求と入金のテーブルの作成の...
-
片方だけ抽出する方法(SQL)
-
行方向のデータを横に並べる
-
続.ORACLEのSELECTのソートに...
-
日付の最大値を検索条件にする方法
-
Accessでフィールドを比較した...
-
ACCESS 一番最新の日付の金額...
-
オラクルではできるのにSQLSERV...
-
ACCESSのSQLで、NULLかNULLでな...
-
クエリのキャンセルがいつにな...
-
データの二重表示の原因
-
accessのロック
-
symfowareのSQL文in句をバッチ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「マスタ」と「テーブル」の違...
-
2つのテーブルから条件に一致...
-
重複するキーから一番古い年月...
-
ACCESS 一つのフィールドに複...
-
PLSQLの識別子エラー
-
主キーの変更
-
Accessでフィールドを比較した...
-
SQL 2つのテーブルとSUBSTRING...
-
続.ORACLEのSELECTのソートに...
-
行方向のデータを横に並べる
-
下記のsqlで取得されるレコード...
-
VIEWでテーブルの集計結果...
-
update文で質問です。 下記の条...
-
[Oracle] UPDATE分の副問い合わ...
-
片方だけ抽出する方法(SQL)
-
自分自身への矢印
-
連番のMin, Maxを取得したい
-
Accessユニオンクエリーで2つ...
-
日付の最大値を検索条件にする方法
-
Inner join と Left joinの明...
おすすめ情報