SQLの結合条件について
・table_A
ID | ATAI
01 | AAA
01 | XXX
02 | ABC
03 | DEF
table_B
ID | ATAI
01 | 不要
02 | 必要
03 | 必要
04 | 不要
上記のようなテーブルAとBがあるとします。
やりたいこと
1.テーブルAに存在するIDをBのIDから抽出
2.テーブルAの「ATAI」の値が’AAA’のIDは抽出対象から外す。
※テーブルAの01IDに’AAA’と’XXX’がありますが、Bの抽出対象から外したい。
2.がうまくいきません。
select B.ID from table_A A,table_B B
where A.ID = B.ID
上記のSQLに2.の条件を足して、結果を02と03にしたいです。
※CASEは使わずにお願いします。
No.5
- 回答日時:
「'AAA'が登場するIDは、他の条件を付けることなく除外したい」で良いんですね?
(なぜ'XXX'が登場したんだろう?)
ならばATAIに'AAA'が登場するIDのリストを作り、NOTで否定すればよい。
where条件に以下の一行を追加。
and A.ID not in (select ID from table_A where ATAI='AAA')
この回答への補足
and A.ID not in (select ID from table_A where ATAI='AAA')
だと、01は抽出されてしまうんです。
ATAI='AAAはnot inではじけますが、'XXX'ははじけないので。
説明下手ですが、
上記の条件では質問内容にある、2テーブルを作成し実行すると、ID01も抽出されてしまいます。
No.4
- 回答日時:
Where条件を編集する工夫はご自身でできませんか?
whereに追加の場合は
and A.ATAI not in ('AAA', 'XXX')
でも
and not(A.ATAI = 'AAA' or A.ATAI = 'XXX')
でも良いし
INNER JOINの場合は
where A.ATAI not in ('AAA', 'XXX')
でも
where not(A.ATAI = 'AAA' or A.ATAI = 'XXX')
でも良いし
この回答への補足
説明不足だったかもしれませんが、
条件としては、テーブルAのATAI「AAA」のIDを抽出対象外にしたいのです。
それでは、XXXの値も抽出対象外になってしまいます。
値がXXXでも、AAAの値のIDと同じでなければ抽出対象なのです。
上記ができなくて困っています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle sqlで質問です。 Aテーブルの情報をBテーブルに更新かけたいです。 やりたいことは、Bテーブルの受 1 2023/05/17 11:17
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- Oracle SQL update方法 2 2022/06/22 14:07
- SQL Server ACCESSで複数テーブルを結合して、リストを作る方法を教えてください。 2 2022/08/12 19:32
- SQL Server ACCESSで3ファイルを結合して、表を作成するやり方を教えて下さい。 17 2022/08/15 20:34
- Oracle SQLについて教えて下さい。 主キーを持ったカラムを主キーの機能を持たせたまま カンマ区切りで文字列 1 2023/03/27 22:47
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- Oracle sqlで質問です。 idを元にidに紐付くデータで住所コードがjpのみのデータ以外のidを取得したい 4 2023/03/20 17:41
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQL2005 のクエリ文について
-
複数テーブルのUPDATE
-
count(1)とcount(*)の違い
-
fix a table に「表を作る」の...
-
Oracle9i v$sysstatの解釈
-
"table device"とは何かについて
-
エクセル マクロ A列の <table>...
-
PL/SQL temporary tableっても...
-
列が255以上のCSVファイルをAcc...
-
PL/SQLでテーブル名に変数を使...
-
Viewにインデックスは張れ...
-
postgreSQLのint型は桁数指定が...
-
SQLでスキーマ名(所有者名)の...
-
【Access】外部結合を行う前に...
-
ORA-00959: 表領域'****'は...
-
ACCESS 複数テーブル・複数フィ...
-
目的のインデックスが使用され...
-
データ表示順序
-
複数あるAccessのテーブルを一...
-
チェックボックスから、データ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CLOB型へのINSERT
-
count(1)とcount(*)の違い
-
truncate文で全テーブルを一気...
-
テーブル名を[]でくくらないと...
-
Oracle複数の表をもとにmerge文...
-
1つのテーブル・2つの列を結合...
-
sqlplusで実行したSQLの結果を...
-
Oracle上のテーブルからCREATE ...
-
oracle sqlで先頭の1件を取得
-
主キーが二つのテーブルのselec...
-
SQLのto_char関数の未定義エラー
-
グループの数を取得したい
-
Oracle テーブルの列削除
-
oracleのプライマリ・キー名の変更
-
CASCADE CONSTRAINTSについて
-
複数テーブルのUPDATE
-
SQL*Loaderをダイレクトモード...
-
マンションのベランダでお酒の...
-
テーブル作成のサンプル
-
インラインビューの更新権限に...
おすすめ情報