Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 比较两行并显示与列名和更改数据的差异_Php_Sql Server - Fatal编程技术网

Php 比较两行并显示与列名和更改数据的差异

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) 显示更改:- “姓名”改为“约翰”,现

我们有两个具有相同结构MSSQL的表 我们想比较一下 表1中的ID122 具有 表2中的最高ID 122

如果存在一个或多个差异,我们希望显示列的名称以及它从两个表中保存的数据

我不想列出所有的列,因为有超过150列

类似于psuedo:-

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