2011-08-11 78 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的回答是正確的:相交給出了匹配相同行的不同列表;但從第一個表中返回的行不能在第二個表中找到相同的匹配項。理想情況下,如果你在尋找差異,你將不得不除了表2,除了表1之外的「除外」:表1除了表2和表2外,我希望我可以將其標記爲已解決。 –

相關問題