2011-08-11 24 views
2

SQL Serverでは、あるテーブルの行全体と同じデータ型を持つ別のテーブルを比較する方法はありますか。テーブルの行全体と他のテーブルの行全体を比較する方法

例:

CREATE TABLE [DBO].[PRODUCT] 
    (
    [PID] [INT] NULL, 
    [NAME] [NCHAR](10) NULL, 
    [PDID] [INT] NULL 
) 

select * from product p, product c where p.{entirerow} = c.{entirerow}

は、ここではオプションのいくつかの種類がありますか?

答えて

11

使用SQL INTERSECT(一致するすべての行)と(すべての異なる行)EXCEPT、here for example

SELECT * FROM Table1 INTERSECT SELECT * FROM Table2 
SELECT * FROM Table1 EXCEPT SELECT * FROM Table2 

あなたはWHEREを使って、列リストまたは列のサブセットを使用して*置き換えることによって、列のサブセットを比較することができます句。

テーブルのスキーマは同じである必要があります。

+0

サンプルを寄せてください。 – sqlnewbie

+0

あなたは何を意味するのか分かりません。 INTERSECTはあなたの例に従って、すべての一致する行を与えます。 – Simon

+2

私はこれが古かったことを知っていますが、今日は私にとって有用でした。 Simonの答えは正しい:Intersectは一致する同じ行の明確なリストを与える。 exceptは2番目のテーブルで一致するものが見つからない最初のテーブルの行を返します。理想的には、相違点を検索していた場合は、「例外」を2回:表1を除いて表2と表2以外の表1を使用する必要があります。 –

関連する問題