我正在尝试编写一个查询,在所有列名中查看一个表(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中不存在的那些。
答案 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 强>
查看下面的结果