将SQL表列名称与缺失列的另一个表列数据进行比较

时间:2016-04-07 17:13:01

标签: sql sql-server sql-server-2008

我正在尝试编写一个查询,在所有列名中查看一个表(A),然后将这些名称与另一个表(B)进行比较,但在表B中我需要将它们与实际文本值进行比较。不是最明确的解释,所以希望这个例子能够更好地展示我需要的东西。

因此TableA包含Date, DiabetesA, DiabetesB, DiabetesC,...

等列

TableB有一列名为VarName,该列中的列将是其他表(例如A)中的所有列名。

我需要创建一个查询,检查tableA的列,并确保表B' s Varname中存在这些列名。

我知道如何检查两个表中是否存在列,但我不知道如何检查某个值是否出现在另一个表中。

所以它看起来像:

Select DiabetesA,DiabetesB,DiabetesC from Table A

然后我想将其与

进行比较
Select VarName from Table B

和Varname内部应该是其他表中的所有列名。我需要追踪Varname中不存在的那些。

1 个答案:

答案 0 :(得分:1)

<强>解释

我们使用sys.tables来获取object_id的正确tableA并使用它来获取Sys.columns中的所有列名称,然后使用TableB检查名称--create table tableA(DiabetesA varchar(10),DiabetesB varchar(10),DiabetesC varchar(10)) --create table tableB(varname varchar(10)) --insert into tableB values ('DiabetesA') select c.name from sys.columns c inner join sys.tables t on c.object_id=t.object_id and t.type='U' and t.name ='tableA ' left join tableB B on B.varname=C.name where B.varname is NULL 1}}

<强>查询

public

<强> Working SQL demo here

查看下面的结果

enter image description here