2017-10-13 8 views
1

一致する行または一致しない行ごとに2つのテーブルを比較する方法。 は、私はそれぞれの行は、デバイスのコンフィギュレーションここで、以下のようなテーブルを持っていると私は別の同じテーブルでこれを比較して、行が2つの一致するテーブルを比較して、一致する行と一致しない行を比較するにはどうすればよいですか?

PID DEVID INID EVTYPEID EVID ALID PARMID TEXTID 
1 20  0  30  0 100102  0 14 
1 103  0  30  0 100103  0 15    
9 21  0  30  0 100113  0 25 
0 31  2  30  0 100114  0 26 
8 38  18  4  53 100114  0 0 
4 20  17  4  53 1000114  0 0 

に一致していないされて見つける必要があるあなたが使用することができます

+2

問題は何ですか?あなたはテーブルを結合する方法を決定する必要があります。次に、INNER JOINは一致するレコードを与え、LEFT JOINと[結合カラム] IS NULLは他のテーブルにないレコードを返します。 – Leonidas199x

+0

これまでに何を試しましたか?私には非常に単純なクエリのようです:両方のテーブルをIDカラムで結合し、一致するか一致しないかを比較します。 – waka

+0

@ Leonidas199x、私はここで左に参加することはできません。何とか私はそれを得ていない – coffemug

答えて

2

ありがとうexcept。それらが正しい順序であることを確認するために、表の列を指定することができます。

select * 
from tbl1 

except 

select * 
from tbl2 

そして、あなたはあなたがテーブル間の値を比較するためのexistsまたはnot existsまたはinnot inを使用することができますintersect

+2

同じことを投稿しようとしていた。ここにはEXCEPTの文書が記録されています。 https://docs.microsoft.com/en-us/sql/t-sql/language-elements/set-operators-except-and-intersect-transact-sql –

+0

私はいつも「例外」について忘れています。それを「左派連合」と考えてください。 :-) –

+0

それは181レコードを返しました。 – coffemug

0

を使用することができます行を一致させるため。

Select PID, DEVID, INID, EVTYPEID,EVID ALID,PARMID,TEXTID from tableA as A 
where exists (select 1 from tableB as B where a.PID=b.PID and a.DEVID=b.DEVID...) - - you can add as per ur requirement) 
+0

select 1、それは何を意味する – coffemug

+0

@coffemugサブクエリから一致するレコードを取得した場合、メインテーブルから対応する一致するレコードを取得できるように、1や任意のカラム値などの値を返すことができます。 – Rams

関連する問題