我正在尝试使用遗留应用程序进行非常hacky跟踪练习。
我打算做的是将每行的BINARY_CHECKSUM值存储在一个单独的表中,以便在我的应用中进行比较。
想象一下,我有2个表 - TableA,TableB
两者都有一个ProductID列(所以可以将两个表连接在一起)
我正在寻找类似的查询:
SELECT a.ProductID, a.BINARY_CHECKSUM(*)AS Hash1, b.BINARY_CHECKSUM(*) AS Hash2 FROM
TableA a
JOIN
TableB b
ON a.ProductID = b.ProductID
这显然不起作用......但是沿着这些方向的东西,所以结果将是(例如)
ProductID |哈希1 | HASH2
1234 | --439419708 | -35860977
答案 0 :(得分:0)
这可能有效:
SELECT a.ProductID, Hash1, Hash2
FROM (select ProductID, BINARY_CHECKSUM(*) AS Hash1 from TableA a) a
JOIN (select ProductID, BINARY_CHECKSUM(*) AS Hash1 from TableB b) b on ...
您的问题只是语法问题。你的方法会奏效。
答案 1 :(得分:0)
你可能会尝试这样做:
with a as (
select BINARY_CHECKSUM(*) as CheckSum,
*
from TableA
),
b as (
select BINARY_CHECKSUM(*) as CheckSum,
*
from TableB
)
select
a.keyField, a.CheckSum, b.CheckSum
from
a
full outer join
b
on a.keyField = b.keyField
where a.CheckSum <> b.CheckSum