アプリ版:「スタンプのみでお礼する」機能のリリースについて

TableAとTableBがあります。構造は同じです。
中身は下記のようだとします。
TableA      TableB
ID VALUE     ID VALUE
1 A       3 C
2 B       4 D
3 C       

差分結合結果を下記のようにとりたいのです。
1 A
2 B
4 D

良い方法をご存じでしたら、ご教授よろしくお願い致します。

A 回答 (3件)

SQL Server 2005 以降であれば、EXCEPT が使えるので、TableA - TableB と TableB - TableA の結果を UNION してやれば良いかと。


http://codezine.jp/article/detail/1304?p=2

例) --------------------------------------------------------------
(SELECT * FROM TableA
EXCEPT
SELECT * FROM TableB)
UNION ALL
(SELECT * FROM TableB
EXCEPT
SELECT * FROM TableA);
------------------------------------------------------------------

EXCEPT が使えないバージョンの場合は、 NOT EXISTS を使って差分を抽出してやれば良いでしょう。

例) --------------------------------------------------------------
SELECT * FROM TableA
WHERE NOT EXISTS (
SELECT 'X' FROM TableB
WHERE TableA.ID = TableB.ID AND TableA.VALUE = TableB.VALUE
)
UNION ALL
SELECT * FROM TableB
WHERE NOT EXISTS (
SELECT 'X' FROM TableA
WHERE TableA.ID = TableB.ID AND TableA.VALUE = TableB.VALUE
)
------------------------------------------------------------------
    • good
    • 0
この回答へのお礼

お礼が遅くなってしまい申し訳ありません。
本当にありがとうございました。

お礼日時:2010/02/18 00:11

結合がお好みならば、FULL OUTER JOINを使ってみてください。



SELECT
ISNULL(a.ID,b.ID) ID,
ISNULL(a.VALUE,b.VALUE) VALUE
FROM TableA a
FULL OUTER JOIN TableB b ON b.ID=a.ID
WHERE a.ID IS NULL OR b.ID IS NULL
    • good
    • 2
この回答へのお礼

お礼が遅くなってしまい申し訳ありません。
本当にありがとうございました。

お礼日時:2010/02/18 00:12

OSQLだと面倒なので、ACCESSをフロントエンドで使用するとして。




1)TableAとTableBの不一致クエリを作成(TableAにあってTableBに無いもの)
2)TableBとTableAの不一致クエリを作成(TableBにあってTableAに無いもの)
3)1)と2)のユニオンクエリを作成
※1)2)は副問い合わせで不一致でも、結合してis nullでも良い


または
1)TableAとTableBのユニオンクエリを作成(UNION ALLでなくてよい)
2)TableAとTableBの完全一致クエリを作成
3)1)と2)の不一致クエリを作成
    • good
    • 0
この回答へのお礼

お礼が遅くなってしまい申し訳ありません。
本当にありがとうございました。

お礼日時:2010/02/18 00:12

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

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