Php 比较两行并显示与列名和更改数据的差异
我们有两个具有相同结构MSSQL的表 我们想比较一下 表1中的ID122 具有 表2中的最高ID 122 如果存在一个或多个差异,我们希望显示列的名称以及它从两个表中保存的数据 我不想列出所有的列,因为有超过150列 类似于psuedo:-Php 比较两行并显示与列名和更改数据的差异,php,sql-server,Php,Sql Server,我们有两个具有相同结构MSSQL的表 我们想比较一下 表1中的ID122 具有 表2中的最高ID 122 如果存在一个或多个差异,我们希望显示列的名称以及它从两个表中保存的数据 我不想列出所有的列,因为有超过150列 类似于psuedo:- Select * from table1 Select * from table2 Compare table1 (column by column) with table2 (column by column) 显示更改:- “姓名”改为“约翰”,现
Select * from table1
Select * from table2
Compare table1 (column by column) with table2 (column by column)
显示更改:-
“姓名”改为“约翰”,现在改为“詹姆斯”,改为2016年11月3日下午3:45
“Mobilenum是”“02373643743”“现在是”“0983783738”“更改为2016年11月4日下午12:46
不想尝试触发器…需要php代码。。。。
我们不需要给出任何列名,因为它应该动态运行所有列名…为什么不想列出列?此表是否会定期更改? 您仍然可以动态创建SQL,但可以将其存储为静态字符串。 此提示的许多示例都使用信息\u schema.columns 如果表不是很大,那么我将p[rob]为每列编写一组测试,并将它们合并在一起,然后只返回diff=true的数据 乙二醇
当然PHP有一些方法可以通过索引遍历列:Column0、Column1等。列不会改变,而是硬编码176列,而不是动态地这样做,这似乎是不对的!只是扫描所有列以查找两者之间的任何差异……感谢您的回复。。。。
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