0

任务:我们正在验证 2 个不同表(具有相同结构)中的数据。为此,我们尝试在记录上使用校验和功能。

问题:表中的记录相同。但是当我们使用校验和(*)时,它会给出不同的校验和。

SELECT statusName,CheckSum(*) from OrderStatus

如果我计算校验和,不包括 DateTime 列,它会在两个表中给出相同的值。

SELECT statusName,CheckSum(StatusName,CreatedByUser,ModifiedByUser) from OrderStatus

表中的列:StatusName、CreatedByUser、ModifiedByUser、CreatedDateTime、LastModifiedTime

如何通过包含 datetime 列来解决此问题。

任何帮助表示赞赏!!!!

4

3 回答 3

1

对于校验和,列的顺序会有所不同。

将第一个查询中的 * 替换为完全相同的列列表。 CheckSum应该在日期和日期时间上工作。

于 2013-01-15T18:44:55.437 回答
0

它似乎对我有用。这是SQL 小提琴

我怀疑您的 DateTime 列有问题 - 运行它以查看是否有任何不同:

SELECT *
FROM OrderStatus OS1
LEFT JOIN OrderStatus OS2 ON OS1.CreatedDateTime = OS2.CreatedDateTime AND OS1.LastModifiedTime=OS2.LastModifiedTime
WHERE OS2.LastModifiedTime IS NULL
于 2013-01-15T18:45:17.147 回答
0

试试这个:

SELECT statusName,
CheckSum(CreatedByUser,ModifiedByUser,CreatedDateTime,LastModifiedTime) 
from OrderStatus
于 2013-01-15T18:47:28.590 回答