我有兴趣比较两个表是否包含相同的数据。
我可以这样做:
#standardSQL
SELECT
key1, key2
FROM
(
SELECT
table1.key1,
table1.key2,
table1.column1 - table2.column1 as col1,
table1.col2 - table2.col2 as col2
FROM
`table1` AS table1
LEFT JOIN
`table2` AS table2
ON
table1.key1 = table2.key1
AND
table1.key2 = table2.key2
)
WHERE
col1 != 0
OR
col2 != 0
但是当我想比较所有数值列时,这有点困难,特别是如果我想对多个表组合进行比较。
因此我的问题是:是否有人知道有可能迭代所有数字列并将结果集限制为那些差异不为零的键?
原文由 Nico Albers 发布,翻译遵循 CC BY-SA 4.0 许可协议
主要问题是 1) 使用 LEFT JOIN ; 2) 使用 col != 0
下面是如何修改它以真正捕获两个表的所有差异
运行您的原始查询并低于一个 - 希望您会看到不同之处
或者您可以尝试针对虚拟数据运行原始版本和更高版本以查看差异
您可以使用与上述相同的虚拟数据示例对其进行测试
注意:在此解决方案中,您不需要选择特定列 - 它只是比较所有列!但是如果您只需要比较特定的列 - 您仍然需要像下面的示例一样挑选它们