A 回答 (9件)
- 最新から表示
- 回答順に表示
No.9
- 回答日時:
No8ですが、
> EXCEPT を使用する次のクエリは、EXCEPT オペランドの左辺のクエリから返され、右辺のクエリからは返されなかった、重複しない値が返されます。
なので、これでは不十分だと思います。
逆も必要なので、Unionして
select * from Aテーブル
except
select * from Bテーブル
Union
select * from Bテーブル
except
select * from Aテーブル
#あ。なるほど。EXCEPTはOracleのMinus互換の命令か…。
No.8
- 回答日時:
No.7
- 回答日時:
失礼しました。
質問文をよく読めていませんでした。001~005といった値が入った列の名前を、IDとします。
「あいう」といった値が入った列の名前を、STRとします。
前半のSELECT文は、AにありBにないもの、後半の
SELECT文では、BにありAにないものを取り出します。
SELECT * FROM A
WHERE NOT EXISTS(SELECT * FROM B
WHERE ID=A.ID AND STR=B.STR)
UNION
SELECT * FROM B
WHERE NOT EXISTS(SELECT * FROM A
WHERE ID=A.ID AND STR=B.STR)
IDだけで一意に行を識別できるなら、STR列に対する
条件は不要です。
No.6
- 回答日時:
Bテーブルだけに存在しAテーブルには存在しないデータを、どうやってJOIN/UNIONなしで表示するんでしょうね(笑)
サンプルデータでしか動作しないSQL書いてもしょうがない。
No.5
- 回答日時:
この質問の回答で、JOINやUNIONが出てくるのが不思議です。
001~005といった値が入った列の名前を、IDとします。
「あいう」といった値が入った列の名前を、STRとします。
SELECT * FROM A
WHERE NOT EXISTS(SELECT * FROM B
WHERE ID=A.ID AND STR=B.STR)
IDだけで一意に行を識別できるなら、STR列に対する
条件は不要です。
No.4
- 回答日時:
手元に環境がないので記憶だけで。
確か、minusはSQLSERVERにはなかった記憶があります。
で、多分Full Outer Joinでいけるはずです。
#2,3のSQL文に比べて、多少複雑になりますが、処理は速い…はずです。
Select
isNull(A.ID,B.ID) ,
isNull(A.Name,B.Name)
From A
FULL OUTER JOIN B
On A.ID =B.ID
Where A.ID Is Null
Or B.ID Is Null
-----------
ちなみに
Select *
From A
FULL OUTER JOIN B
On A.ID =B.ID
を流せばFULL OUTER JOINがどういうものかは分かると思います。(まあBooks Onlineにもサンプルはあるはずなんですが)
No.3
- 回答日時:
ID/文字列の組が、AテーブルでもBテーブルでも同じ(同じIDには必ず同じ文字列が対応する)であれば
SELECT ID, STR
FROM A
WHERE ID NOT IN (
SELECT ID FROM B
)
UNION
SELECT ID, STR
FROM B
WHERE ID NOT IN (
SELECT ID FROM A
)
で。
同じIDでも対応する文字列が同じとは限らない場合は
SELECT ID,STR
FROM A
WHERE NOT EXISTS (
SELECT * FROM B WHERE ID = A.ID AND STR = A.STR
)
UNION
SELECT ID,STR
FROM B
WHERE NOT EXISTS (
SELECT * FROM A WHERE ID = B.ID AND STR = B.STR
)
で。
(全角空白でインデントしてあるので、そのままでは実行できません。)
No.2
- 回答日時:
select * from A where A.num+A.chr not in
(select B.num+B.chr from B where A.num = B.num and A.chr = B.chr)
でどうかな。
比べる項目は場合によってはCONCATでそろえたりしてください。
No.1
- 回答日時:
同じ型のテーブルならminusが使えるかと思います。
select * from ・・・ minus select * ・・・
(構文がSQLServerで使えるかは調べてないですが。)
だめなら、
select num, ss from tableA where num not in (select num from tableB)
とか
not exists文に直せばいけるかと。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- Oracle sqlのupdate文で質問です。 テーブルBの番号をキーにテーブルAの身長をテーブルBの身長に更新 2 2022/11/02 15:15
- MySQL 複数DBテーブルからのデータ取得 3 2022/05/17 15:02
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- Oracle SQLについて教えて下さい。 主キーを持ったカラムを主キーの機能を持たせたまま カンマ区切りで文字列 1 2023/03/27 22:47
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- その他(データベース) IT用語について質問です。 以前ITパスポートの試験を受けた際にデータベースが何の集まりかについての 2 2022/12/10 12:29
- Oracle sqlで質問です。 Aテーブルの登録番号をキーにBテーブルから確認番号を取得したいのですが、Bテーブ 4 2023/05/18 13:08
- Oracle sqlで質問です。 idを元にidに紐付くデータで住所コードがjpのみのデータ以外のidを取得したい 4 2023/03/20 17:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ビューで引数を使いたい
-
ACCESS 一番最新の日付の金額...
-
IFで条件を分岐させてのINSERT...
-
2つのテーブルを結合して合計(...
-
別のテーブルの値を抽出条件と...
-
クエリを分割せずに一つにまと...
-
SQL 重複 条件を付けて抽出したい
-
エクセル
-
「マスタ」と「テーブル」の違...
-
ACCESS2007 フォーム 「バリア...
-
2つのテーブルから条件に一致...
-
PhpMyAdminで作成して実行せよ...
-
アクセスのテーブルからエクス...
-
Accessのリンクテーブルについて
-
accessテーブル作成クエリを実...
-
Accessにインポートしたら並び...
-
SQLServer + PHP で直近に追加...
-
重複するキーから一番古い年月...
-
SELECT時の行ロックの必要性に...
-
2つの項目が重複するレコード...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ビューで引数を使いたい
-
ACCESS 一番最新の日付の金額...
-
Accessで在庫管理を
-
IFで条件を分岐させてのINSERT...
-
DB2 業種毎に連番をつけたいの...
-
複数のテーブルから同じ条件で...
-
二つの表の項目を比較して値を...
-
SQLで○○の値以外を持っているレ...
-
select into句のトランザクショ...
-
SQLについて質問です。 テーブ...
-
大学でSQLの授業があるのですが...
-
Sql文のUpdateと副問い合わせで...
-
SQLの書き方
-
空のテーブルの判別
-
2つのテーブルを結合して合計(...
-
Accessクエリでのグループ化
-
SQL 件数取得を速くしたい
-
Insert Into Select での重複に...
-
INSERT文でサブクエリ
-
年齢分布テーブルの再集計SQL
おすすめ情報