我有2张桌子。 T_before和T_after,这两个具有相同的表结构(数据类型,字段名称都相同)。 T_before是现在的数据。 T_用于检查差异的数据。
我想写一个SELECT语句来提取比较这两个表时哪个字段被更改。
例如。对于相同的ID,T_before.name!= T_after.name所以在'changedField'列中(从SELECT语句创建)与字符串'name'连接
现在我写了这个。
SELECT CASE(WHEN T_before.name != T_after.name THEN 'name, ' ELSE '' END CASE) AS f1,
CASE(WHEN T_before.address != T_after.address THEN 'address, ' ELSE '' END CASE) AS f2,
CONCAT(f1,f2) AS changedField
FROM T_before INNER JOIN T_after ON (T_before.id = T_after.id);
现在,我有大约150个字段需要检查。使用这个SELECT语句创建的字段非常多(或者它不是很多?)。我有更好的方法吗?
编辑: 结果:
f1 |f2 |changedField
name, |address, |name, address,
期望的结果:
changedField
name, address,
如前所述,我有大约150个字段要检查,所以我编写的sql语句会返回很多字段