在我的C#项目中,我描述了一些带有SQL表的设备,其中所有函数都用几个参数描述,例如:
Function Position Default ...
Autoreset 5 0
Power 9 1
Adjust 0 22
...
有时会发生新版本替换前一版本,通常新版本与前一版本相比几乎没有变化。只是举个例子,可以有
我希望看到的是表中的更改,但不仅仅是两个表之间的差异列表,而是例如一个表格:
我的想法是使用JOIN命令以获得三个表:
我使用下面的指令从SQL开始开发
SqlCommand comando = new SqlCommand("select * from " + TableName1 + " FULL OUTER JOIN " + TableName2 + " ON " + TableName1 + ".FieldName="+ TableName2 +".FieldName", conn);
但似乎我需要指定所有列。是否可以为所有列进行JOIN?
BR
答案 0 :(得分:0)
我不太了解如何在不同的表之间存储数据,但基本上你只需要根据Function列查看表之间的差异。如果您列出所有列,则在结果集中,您将仅为所有列匹配的记录获取非NULL行。因此,要确定差异,您的选择应该是:
select *
from TCommon
full join T1 on TCommon.[Function] = T1.[Function]
full join T2 on TCommon.[Function] = T2.[Function]
如果[Function]找到,结果将为您提供表中的值,否则为NULL。至于着色属性之间的差异,我将确定C#中的差异。
在最常见的选项中,您的结果集将是
TCommon.[Function] TCommon.A1 T1.[Function] T1.A1 T2.[Function] T2.[A1]
Autoreset 1 Autoreset 2 NULL NULL
Power 2 NULL NULL Power 3
Adjust 3 NULL NULL Adjust 3
...
NULL值表示该项目不存在(已删除或未添加),属性差异表示该属性已更改。