Holen Sie sich den verschiedenen Namen der Spalte zwischen 2 Tabellen in SQL server

In meiner SQL server-database habe ich den gleichen Tabellennamen in verschiedenen Schemata. Zum Beispiel schema1.card (Tabelle 1) und schema2.card (Tabelle 2).

Es gibt etwa 40 Tische in meiner database. Ich möchte nur beide Tabellen vergleichen und wissen wollen, welche die verschiedenen Spaltennamen zwischen diesen 2 Tabellen sind.

Ich habe einen Screenshot der Tische beigefügt. Ich möchte alle Spalten herausfinden, die nicht in Tabelle 2 sind, sondern in Tabelle 1 und umgekehrt vorhanden sind.

Bildbeschreibung hier eingeben

Solutions Collecting From Web of "Holen Sie sich den verschiedenen Namen der Spalte zwischen 2 Tabellen in SQL server"

Sie können Information_schema oder sys.columns verwenden

 select * from information_schema.columns where table_name = 'card' and table_schema = 'schema1' except select * from information_schema.columns where table_name = 'card' and table_schema = 'schema2' 

– Mit voller Begleitung

 select * from information_schema.columns t1 full join information_schema.columns t2 on t1.table_catalog=t2.table_catalog and t1.column_name = t2.column_name where t1.table_name = 'card' and t2.table_name = 'card' and t1.table_schema = 'schema1' and t2.table_schema = 'schema2' and (t1.column_name is null or t2.column_name is null) 
 select Column_Name from information_schema.columns where table_name = 'sysjobs' and table_schema = 'YourSchema1' except select Column_Name from information_schema.columns where table_name = 'sysjobservers' and table_schema = 'YourSchema2' 

Auch, was Sie tun können, ist, erstellen Sie eine Variable und loop durch alle Schemata und legen Sie den Unterschied in einer temporären Tabelle. Auf diese Weise musst du nicht eins nach dem anderen machen und du kannst es automatisieren

Ich habe versucht, eine Spalte in meinem zweiten Schema hinzuzufügen und schrieb folgende Abfrage adn Ich habe die Ausgabe was ich will.

  select * from information_schema.columns t1 where t1.table_name = 'card' and t1.table_schema = 'Custom' and t1.column_name not in(select t2.column_name from information_schema.columns t2 where t2.table_name = 'card' and t2.table_schema = 'boston' )