我们有两个具有相同结构的表(MSSQL) 我们想比较一下 来自table1的(ID)122 同 表2中的最高ID 122
如果存在一个或多个差异,我们希望显示该列的名称及其从两个表中保存的数据。
我不想列出所有列,因为有超过150个
像(伪)的东西: -
Select * from table1
Select * from table2
Compare table1 (column by column) with table2 (column by column)
显示更改: -
'姓名'是'约翰'现在'詹姆斯'改变3/11/2016 3.45pm 'Mobilenum'是'02373643743'现在'0983783738'已改变4/11/2016 12.46pm
不想尝试触发器......需要php代码.... 我们不应该提供任何列名,因为它应该动态地运行它们......
答案 0 :(得分:0)
为什么你不想列出列 - 这个表是否会定期更改? 您仍然可以动态创建SQL - 但将其存储为静态字符串。 很多例子(提示使用information_schema.columns) 如果表格不是很大,那么我会写[抢写一堆测试(每列1个)和UNION所有它们在一起 - 然后只返回数据,其中diff = true 例如
Select * from
(
Select case when ISNULL(table1.columnA, -999) <> ISNULL(table2.columnA, -999) then 1 else 0 end as diff, table1.columna as Old_Val, table2.columnA as new_val
from table1 join table2 on ...
UNION ALL
/* etc etc * 150 ... */
) as x
where x.diff = 1