比较MS SQL中diff db中的2 diff表中的列名

时间:2017-05-24 21:04:01

标签: sql sql-server

我试图从diff db中的2个diff表中获取列名,并比较它们以查看是否在任何表中有任何额外的列。他们应该完全匹配。一种可能的解决方案是从两个表中获取所有列名并在临时表中并排转储并进行比较?请帮助。

IF OBJECT_ID('tempdb..#myTable') IS NOT NULL DROP TABLE #myTable

CREATE table #myTable (
    table1 varchar(100) null,
    table2 varchar(100) null
 )

 INSERT INTO #myTable (table1)
     SELECT name
     FROM sys.columns
     WHERE object_id = OBJECT_ID('table1')

select * from #mytable
DROP TABLE #mytable

1 个答案:

答案 0 :(得分:0)

我将您的查询修改为此

IF OBJECT_ID('tempdb..#myTable') IS NOT NULL DROP TABLE #myTable
CREATE table #myTable
(
 rowNum int IDENTITY(1,1),
 table1 varchar(100) null
 )
GO
IF OBJECT_ID('tempdb..#myTable2') IS NOT NULL DROP TABLE #myTable2
CREATE table #myTable2
(
 rowNum int IDENTITY(1,1),
 table2 varchar(100) null
 )
 GO

USE database1 --your 1st database name here
GO

INSERT INTO #myTable (table1)
      (
        SELECT
            name
        FROM sys.columns
       WHERE object_id = OBJECT_ID('Table_1'))
GO

USE database2 -- your 2nd database name here
GO

INSERT INTO #myTable2 (table2)
        (
        SELECT
            name
        FROM sys.columns
        WHERE object_id = OBJECT_ID('Table_2'))
GO


SELECT table1,table2
FROM #myTable m
 FULL OUTER JOIN #myTable2 m2 ON m.rowNum = m2.rowNum
ORDER BY table1,table2
DROP TABLE #mytable
DROP TABLE #mytable2