查找table1中与table2相比存在哪些额外列

时间:2015-01-24 01:14:39

标签: sql sql-server

我试图找出与table1相比table2中存在哪些额外列。所以,我想到使用sys.columns中的信息如下。

但是,我不认为我在这里得到正确的结果,因为我的table1包含90列,而table2包含50,所以我希望我的结果只有{{1}行。但是,它有更多。

40

我还在网站上看到了SELECT NAME FROM sys.columns WHERE object_id = Object_id('CardioVascular.AcuteCareHeartFailureInpatientCoded') EXCEPT (SELECT NAME FROM sys.columns WHERE object_id = Object_id('CardioVascular.HeartFailureInpatientCoded')) 关键字,并考虑过使用它,但却遇到了一些错误。

minus

2 个答案:

答案 0 :(得分:1)

我发现INFORMATION_SCHEMA在这些情况下非常有用。

SELECT *
FROM (
SELECT TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'AcuteCareHeartFailureInpatientCoded') t1
FULL OUTER JOIN (
SELECT TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'HeartFailureInpatientCoded') t2 ON t1.COLUMN_NAME = t2.COLUMN_NAME

答案 1 :(得分:1)

你可以做这样的事情

SELECT TABLE_NAME, 
       COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'table1' AND 
      COLUMN_NAME NOT IN (SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'table2')

只需更换' table1'和'表2'用你的表名