簡體   English   中英

與table2相比,發現table1中存在哪些額外的列

[英]finding which extra columns are present in table1 in comparison with table2

我試圖找出與table2相比table1中存在哪些額外的列。 因此,我想到了如下使用sys.columns信息。

但是,我認為這里沒有得到正確的結果,因為我的table1包含90列,而table2包含50列,所以我期望我的結果只有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關鍵字,並考慮使用它,但會出現一些錯誤。

SELECT NAME
FROM   sys.columns
WHERE  object_id = Object_id('CardioVascular.AcuteCareHeartFailureInpatientCoded')
minus
SELECT NAME
FROM   sys.columns
WHERE  object_id = Object_id('CardioVascular.HeartFailureInpatientCoded') 

我發現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

你可以做這樣的事情

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”和“ table 2”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM